2012-12-16 33 views
0

我在我的強類型的DbContext的OnModelCreating()方法指定如下我自己的數據庫表名和模式:匿名類型「無效」的實體框架代碼例外第一OnModelCreating

modelBuilder.Entity<MyAssociativeClass>().ToTable("MYASSOCIATIVECLASS", schemaName: "MYSCHEMA"); 
     modelBuilder.Entity<MyAssociativeClass>() 
      .HasKey(x => new { x.ClassA.ID, ClassBID = x.ClassB.ID }); 

然而,我得到以下錯誤:

The properties expression 'x => new <>f__AnonymousType1`2(ID = x.MyClassA.ID, MyClassBID = x.MyClassB.ID)' is not valid. The expression should represent a property: C#: 't => t.MyProperty' VB.Net: 'Function(t) t.MyProperty'. When specifying multiple properties use an anonymous type: C#: 't => new { t.MyProperty1, t.MyProperty2 }' VB.Net: 'Function(t) New From { t.MyProperty1, t.MyProperty2 }'.

正如你所看到的,MyClassA和MyClassB都有一個ID屬性。我在匿名類型中爲MyClassB.ID指定了一個不同的名稱,所以與使用同一個屬性名稱兩次沒有衝突。這仍然會導致問題。爲什麼它不允許這樣做?

回答

1

我認爲你是一流的MyAssociativeClass將要暴露的外鍵的屬性,例如,你可以再做:

modelBuilder.Entity<MyAssociativeClass>().ToTable("MYASSOCIATIVECLASS", schemaName: "MYSCHEMA"); 
     modelBuilder.Entity<MyAssociativeClass>() 
      .HasKey(x => new { x.ClassA_Id, ClassB_Id}); 
+0

對不起了這麼久纔回到你身邊,但是這看起來像只有這樣才能讓它工作。謝謝。 – lintmouse

相關問題