EF内部オブジェクトのプロパティへのコア・フル・マッピング

c# entity-framework-core fluent-entity-framework

質問

いくつかのプロパティを含むクラスがあります。いくつかのアーキテクチャ上の理由から、私はクラスに別のオブジェクトのインスタンスを持っています。

簡単な例

public class MyEntity {
   public MySubEntity SubEntity {get; set;}
}

このために、次のような流暢なマッピングを作成します。

builder.ToTable(MyEntity.CONST_TABLE_NAME);
builder.HasKey(m => m.Id);
builder.Property(m => m.Column1).IsRequired();
builder.Property(m => m.SubEntity.Column2).IsRequired();

サブエンティティのすべてのプロパティをメインエンティティに統合することはできません(サブエンティティには独自のインテリジェンスがあります)。私はちょうど分離されたテーブルに格納されていない私のsubentityのプロパティを、myEntityテーブルにマップしたいと思います。

最後の行は例外をスローします:

The expression 'm => m.SubEntity.Column2' is not a valid property expression. The expression should represent a property access: 't => t.MyProperty'.

どのようにしてこのようなマッピングを実行できますか?

受け入れられた回答

EFコアは、このタイプのマッピングを現在サポートしていません。 EF Core 1.0 RTMではサポートされません(githubの問題を参照してくださいhttps : //github.com/aspnet/Home/issues/1330

私のgithub問題で説明したように、私は2つの解決策を考え出しました:

1)EF用に設計された私のモデルから派生クラスを作成し、すべてのプロパティを簡単に公開します。挿入/更新とDbからの検索時に、より多くのマッピングが必要になります。このオプションは選択しません

2)プロキシプロパティを作成します。私の例では、これは次のようなものです:

public class MyEntity {
   private MySubEntity SubEntity {get; set;}
   public string SubEntityValue 
   { 
     get 
     { 
         return SubEntity.Value;
     } 
     set 
     { 
         SubEntity.Value = value; 
     }
}

これは最善の解決策であるように思われます(私たちはこれを選択します)。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ