EAV と linq は幸せな結婚ではありません。あなたのベストショットは、型指定された属性の子からeav_attribute
値を(として)解決するマップされていないプロパティを作成することだと思います。object
エンティティ フレームワークでは、このプロパティを式で使用することはできません (つまり、Where
またはでは使用できません) 。アクセスするには、まず にSelect
変換する必要があります。IEnumerable
(Linq-to-sql は、ボンネットの下で linq-to-objects に切り替えることができるため、それを許可する場合があります)。
別のオプションは、同じことを行うタイプの計算列を作成することですsql_variant
が、現在は t-sql コードです。しかし... EFはサポートしていませんsql_variant
。読むにはちょっとした工夫が必要です。
それが読書の部分です。
値を設定/変更/削除するためのショートカットが表示されません。親と子を持つ任意のオブジェクト グラフとしてオブジェクトを処理するだけです。SQL Server では、1 つの外部キーに対してしか定義できないため、カスケード削除を使用できません。(これはそれに取り組むかもしれませんが、試したことはありません)。
ですから、本当に良いニュースではありません。あるプロジェクトでは、避けられない EAV 部分を持つデータベースも扱っていることを知っておくとよいでしょう。EF でも行いますが、摩擦がないわけではありません。