0
在我的MVC項目中開始使用CodeFirst並遇到一些麻煩。 我有一些預定義模式的使用數據庫。 有一些表:使用CodeFirst自定義多對多映射
[Persons]
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](30) NOT NULL,
[Birthday] [datetime] NOT NULL,
[Address] [nvarchar](30) NOT NULL,
[Zip] [nvarchar](5) NOT NULL,
[City] [nvarchar](30) NOT NULL,
[Tax] [money] NOT NULL,
[Memo] [varbinary](max) NULL
[Seminars]
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](20) NOT NULL
和many-to-許多地方semid的參考Seminars.ID和REFID參考Persons.ID
我試圖連接表
[QualRef]
[SemID] [bigint] NOT NULL,
[RefID] [bigint] NOT NULL
修復我使用配置類的CodeFirst架構綁定:
class PersonConfiguration : EntityTypeConfiguration<Person>
{
internal PersonConfiguration()
{
this.HasMany(i => i.Seminars)
.WithMany(c => c.Persons)
.Map(mc =>
{
mc.MapLeftKey("SemID");
mc.MapRightKey("RefID");
mc.ToTable("QualRef");
});
}
}
以及與此代碼註冊它:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>().ToTable("Persons");
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new PersonConfiguration());
}
但是,當我使用這個模型出錯運行應用程序 - CodeFirst試圖找到一些表「dbo.People」,它不存在(預期)(?!)。感謝您的好回答!
問題是ToTable( 「人」)沒有任何理由。問題在於「QualRef」表格 – DrAlligieri
您是否試過我的代碼?嘗試更改代碼中'OnModelCreating'中的代碼順序,以便在'modelBuilder.Configurations.Add(new PersonConfiguration());'後面的末尾調用base方法。 –
是的,Jayantha,我試過了。問題是(如我所想)EF試圖創建(或關聯)連接表的新映射。它爲什麼這樣做 - 我不知道。 – DrAlligieri