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识别为复杂类型的情况下,才能这样做。
简述:
- Class2不应包含对其他EF实体的任何引用。 仅适用于其他复杂类型或标准类型
- Class2不能是通用的。 在这种情况下,作为一种解决方法,您可以创建一个非通用的嵌套类,并在Class1中使用它。