Asp.net

OnModelCreating 在實體框架 7 中未定義

  • November 19, 2015

我正在嘗試在 EF7 中設置模型的關係,但我遇到了問題:OnModelCreating方法和DbModelBuilder未定義。

過去,我使用 EF6,但現在我嘗試遷移到 EF7。

這是我的程式碼

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
       //Section -> many Category
       modelBuilder.Entity<Section>()
           .HasMany<Category>(p => p.Categories)
           .WithRequired(p => p.Section);

       //Section -> many PriceCategory
       modelBuilder.Entity<Section>()
           .HasMany<PriceCategory>(p => p.PriceCategories)
           .WithRequired(p => p.Section);

       //Category - many Procedures
       modelBuilder.Entity<Category>()
           .HasMany<Procedure>(p => p.Procedures)
           .WithRequired(p => p.Category);

           //PriceCategory - many PriceProcedures
           modelBuilder.Entity<PriceCategory>()
           .HasMany<PriceProcedure>(p => p.PriceProcedures)
           .WithRequired(p => p.PriceCategory);
}

我的進口:

using Microsoft.Data.Entity;
using Domain.Models;

我的項目.json:

{
 "version": "1.0.0-*",
 "description": "Domain Class Library",
 "authors": [ "Garrus" ],
 "tags": [ "" ],
 "projectUrl": "",
 "licenseUrl": "",

   "dependencies": {
       "EntityFramework.Commands": "7.0.0-rc1-final",
       "EntityFramework.Core": "7.0.0-rc1-final",
       "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
       "Microsoft.CSharp": "4.0.1-beta-23516",
       "System.Collections": "4.0.11-beta-23516",
       "System.Linq": "4.0.1-beta-23516",
       "System.Runtime": "4.0.21-beta-23516",
       "System.Threading": "4.0.11-beta-23516"
   },

 "frameworks": {
   "net451": { },
   "dnxcore50": {}
 }
}

你能幫助我嗎?也許我忘記了一些 NuGet 包,或者在 EF7 中有另一種設置模型關係的方法?

應該是這樣的:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
   ....
}

我猜 DbModelBuilder 被重命名為 ModelBuilder

嗯…我有很多問題,所以我創建了新的 ASP.NET 5 MVC 項目,在那裡複製我的舊模型、控制器、viewa 等,一切都很好。(我認為,這是一個奇怪的魔法

在這裡,覆蓋的方法,一切都好

       protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
       {
           base.OnConfiguring(optionsBuilder);
       }

       protected override void OnModelCreating(ModelBuilder modelBuilder)
       {
           base.OnModelCreating(modelBuilder);
       }

我的用法與問題相同。Domain 的 project.json 可能對面臨同樣錯誤的人有用。

{
 "version": "1.0.0-*",
 "description": "Domain Class Library",
 "authors": [ "Garrus" ],
 "tags": [ "" ],
 "projectUrl": "",
   "licenseUrl": "",

   "dependencies": {
       "Microsoft.CSharp": "4.0.1-beta-23516",
       "System.Collections": "4.0.11-beta-23516",
       "System.Linq": "4.0.1-beta-23516",
       "System.Runtime": "4.0.21-beta-23516",
       "System.Threading": "4.0.11-beta-23516",
       "EntityFramework.Core": "7.0.0-rc1-final",
       "EntityFramework.Commands": "7.0.0-rc1-final",
       "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
   },

 "frameworks": {
   "net451": { },
   "dnxcore50": { }
 }
}

引用自:https://stackoverflow.com/questions/33811336