簡體   English   中英

實體框架7 DbContext腳手架

[英]Entity Framework 7 DbContext scaffold

我正在嘗試使用ASP.NET 5和Entity Framework 7為現有數據庫結構生成DbContext 。毫不奇怪,沒有很多關於如何輕松完成此操作的文檔。 另外,我想僅僅支持上下文; 有大約900個表,我只關心它們中的一些,我不需要每個表的模型類。

我一直在使用指定的命令在這里 ,並在這里與點點運氣。

所以,我想我有兩個問題:

  1. 生成的上下文文件位於何處? 我在命令提示符下運行命令沒有失敗,但沒有其他事情發生。 我知道我至少在正確的位置,因為我可以添加舊的EF6模型具有不受支持的屬性,它給我一個錯誤,他們不支持。

  2. 是否可以僅生成沒有相應模型類的上下文?

我的項目生成上下文和模型時遇到了同樣的問題。 這是我做過的一些事情。

更新對於下面的1.0 RC1

Project.json

  "dependencies": {
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
    "EntityFramework.Commands": "7.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final"
  },

  "commands": {
    "ef": "EntityFramework.Commands"
  },

  "frameworks": {
    "dnx451": { },
    "dnxcore50": { }
  }

DNX命令

dnx ef dbcontext scaffold "connectionString" EntityFramework.MicrosoftSqlServer

原帖在下面

確保將這些文件添加到project.json文件中:

"dependencies": {
    "EntityFramework.SqlServer": "7.0.0-beta7",
    "EntityFramework.Commands": "7.0.0-beta7",
    "EntityFramework.SqlServer.Design": "7.0.0-beta7"
},
"commands": {
    "ef": "EntityFramework.Commands"
}

使用dnvm update-selfdnvm升級升級dnvm和dnx運行時。 我在cmd中運行它。

在項目位置打開cmd.exe(如果您在Windows中,導航到該文件夾​​並在文件夾中右鍵單擊並單擊“在此打開命令窗口”)。 就我而言,我的數據訪問層有一個單獨的項目,例如。

C:\Projects\Stackoverflow Example\src\StackoverflowExample.DAL\

我然后simplay跑了:

dnx ef dbcontext scaffold“Data Source = .; Initial Catalog = database; Integrated Security = True”EntityFramework.SqlServer

確保您的項目可以構建。 如果有錯誤,命令可能不起作用。

它生成了所有模型以及上下文(使用每個實體的OnModelCreating()設置)。 如果您不需要所有模型,只需刪除不使用的模型。

所以回答你的問題:

  1. 它在您運行dnx ef dbcontext scaffold的文件夾中創建模型和上下文。
  2. 我看不到任何允許你這樣做的命令。 在cmd中運行dnx ef --help並自己查找。 dnx ef

我希望這有幫助。

scaffold命令存在一個選項--table(-t):

dnx ef dbcontext scaffold connectionstring provider -t dbo.tab1 -t dbo.tab2

對於EF 7,您不再需要使用base初始化,它會導致編譯器錯誤。 您需要查看Microsoft EF7啟動文檔。

你想要關注新的

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Visual Studio 2015 | Use the LocalDb 12 instance created by Visual Studio
        optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");

        // Visual Studio 2013 | Use the LocalDb 11 instance created by Visual Studio
        // optionsBuilder.UseSqlServer(@"Server=(localdb)\v11.0;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");

        // Visual Studio 2012 | Use the SQL Express instance created by Visual Studio
        // optionsBuilder.UseSqlServer(@"Server=.\SQLEXPRESS;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");
    }

我會從現有數據庫中嘗試代碼優先。 您可以創建上下文類,看起來像這樣:

public class MyDbContext : DbContext {

        public MyDbContext()
            : base("connectionString") {
            Database.SetInitializer<MyDbContext>(null);
        }

        public virtual DbSet<Table1> Table1s { get; set; }

        public virtual DbSet<Table2> Table2s { get; set; }

        ...
}

您可以僅為所需的表包含DbSet。 您可以根據這些模型創建所需的相應模型(表1,表2等)和腳手架控制器和視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM