entity framework代码优先:如何使用嵌套对象将平面表映射到类

我有一个场景,其中来自单个表的数据必须在2个对象中。

[Table] -Field1 -Field2 -Field3 -Field4 

课程看起来像这样:

 [Class1] -Field1 -Field2 -Class2 object here [Class2] -Field3 -Field4 

我在Class1中为Class2属性设置了属性[NotMapped],该属性包含字段3和4.我还在数据库上下文中添加了配置:

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

问题是当我尝试使用我得到的Class1entity framework时:

属性“Class2”不是“Class2”类型的声明属性。 使用Ignore方法或NotMappedAttribute数据批注validation是否未从模型中显式排除该属性。 确保它是有效的原始属性。

如何将Entity Framework Code First与具有嵌套对象且具有平面表中所有信息的实体一起使用?

只有在EF CF可以将Class2识别为复杂类型的情况下,才能这样做。

简述:

  1. Class2不应包含对其他EF实体的任何引用。 仅适用于其他复杂类型或标准类型
  2. Class2不能是通用的。 在这种情况下,作为一种解决方法,您可以创建一个非通用的嵌套类,并在Class1中使用它。