2012-06-13 47 views
6

我有一個場景,其中來自單個表的數據必須位於2個對象中。實體框架代碼第一:如何使用嵌套對象將平坦表映射到類

[Table] 
-Field1 
-Field2 
-Field3 
-Field4 

和類看起來像這樣:

[Class1] 
-Field1 
-Field2 
-Class2 object here 

[Class2] 
-Field3 
-Field4 

我在Class1的屬性[NotMapped]設置在其包含的字段3和4我還添加了等級2的屬性在數據庫上下文的配置:

public class ConfigurationClass1 : EntityTypeConfiguration<Class1> { 
    public ConfigurationClass1() { 
     Property(o => o.Class2.Field3).HasColumnName("Field3"); 
     Property(o => o.Class2.Field4).HasColumnName("Field4"); 
    } 
} 

的問題是,當我嘗試使用實體框架與Class1的我:

屬性'Class2'不是類型'Class2'上的聲明屬性。 使用Ignore方法或NotMappedAttribute數據註釋驗證該屬性是否未明確從 模型中排除。確保它是一個有效的基本屬性。

我該如何使用實體框架代碼優先使用具有嵌套對象的實體與平面表中的所有信息?

回答

7

只有在EF CF認可Class2爲Complex type的情況下,您纔可以這樣做。

簡述:

  1. Class2中不應該包含對其他EF實體的任何引用。其他複雜類型或標準類型只有
  2. Class2不能是通用的。在這種情況下,作爲一種解決方法,您可以創建非通用嵌套類並在Class1中使用它。
+0

對於一個簡單的問題,似乎很麻煩。 –

+0

@Chuck Conway同意,但這是它在EF –

+0

中的工作原理我完全忘記了ComplexType。一旦我用ComplexType屬性設置它,一切都奏效。謝謝。 +1並接受:) –

相關問題