9

我想在EF7中設置我的模型的關係,但我遇到了問題:OnModelCreating方法和DbModelBuilder未定義。OnModel在實體框架中創建未定義7

過去,我使用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; 

我project.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中建立模型關係?

+0

我剛剛知道,** OnConfiguring **方法也是未定義的。 –

回答

27

應該是這樣的:

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

我猜DbModelBuilder更名爲模型構建器

+0

保存了我的培根。 – radpin

1

嗯......我有很多probllems的,所以我創建新的ASP.NET MVC 5項目,在那裏複製我的舊模型,控制器,視圖等,這一切都OK。 (我認爲,這是一個奇怪的魔法

這裏說overrided方法,一切都OK

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

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

我usings是相同的問題。 和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": { } 
    } 
}