12

1つのテーブルのデータが2つのオブジェクトに含まれている必要があるというシナリオがあります。

[Table]
-Field1
-Field2
-Field3
-Field4

そして、クラスは次のようになります。

[Class1]
-Field1
-Field2
-Class2 object here

[Class2]
-Field3
-Field4

Class1で、フィールド3と4を含むClass2のプロパティに属性[NotMapped]を設定しました。また、データベースコンテキストに構成を追加しました。

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

問題は、Class1でEntity Frameworkを使おうとすると、次のようになります。

プロパティ「Class2」は、タイプ「Class2」で宣言されたプロパティではありません。IgnoreメソッドまたはNotMappedAttributeデータアノテーションを使用して、プロパティがモデルから明示的に除外されていないことを確認します。それが有効なプリミティブプロパティであることを確認してください。

フラットテーブルにすべての情報を含むネストされたオブジェクトを持つエンティティで、Entity Framework Code Firstを最初に使用するにはどうすればよいですか?

4

1 に答える 1

10

Class2がEFCFによって複合型として認識できる場合にのみ、このようにすることができます。

簡単に:

  1. Class2には、他のEFエンティティへの参照を含めることはできません。他の複合型または標準型のみ
  2. Class2をジェネリックにすることはできません。この場合、回避策として、非ジェネリックのネストされたクラスを作成し、それをClass1で使用できます。
于 2012-06-13T16:02:56.103 に答える