12

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

[Table]
-Field1
-Field2
-Field3
-Field4

这个类看起来像这样:

[Class1]
-Field1
-Field2
-Class2 object here

[Class2]
-Field3
-Field4

我在 Class1 中设置了属性 [NotMapped] 而不是 Class2 的属性,其中包含字段 3 和 4。我还在数据库上下文中添加了配置:

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 数据注释验证该属性是否已从模型中显式排除。确保它是有效的原始属性。

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

4

1 回答 1

10

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

简要地:

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