こんにちは私は自分のプロジェクトにMVC 5
とEntity Framework 6
を使用しています。 私は、次の図のようなモデルがあります:相関エンティティで検索
をそして私はTag
オブジェクトのセットから開始することにより、エンティティの製品を照会する必要があります。 Tag
オブジェクトは、Table-Per-Entity
戦略継承を使用して実際にマップされる抽象クラスです。
これは実際Tag
実装の具体的なインスタンスが存在するであろう私の関数法タグリストパラメータの
public IEnumerable<Product> SerachByTag(IEnumerable<Tag> tagList);
の署名です。
このクエリはどのように作成できますか?
は、例えばIは、データ構造
[
{ tagType: 1, stringProperty: "abc" },
{ tagType: 2, intProperty: 9 }
]
など以下の入力で受信することができます。これは、製品をフィルタリングするより良い方法でしょうか?たとえば、私は確かに最初にすべての単一の基準について製品のリストを適用し、次のサンプルのように、これらの結果を交差することができます:
var p1 = ctx.Tags
.OfType<FirstTagType>()
.Where(x => x.StringProperty.Equals("abc"))
.Select(x => x.Products);
var p2 = ctx.Tags
.OfType<SecondTagType>()
.Where(x => x.IntProperty == 9)
.Select(x => x.Products);
var results = p1.Intersect(p2);
をしかし、この場合、私の質問は公演についてです。このクエリは多くのフィルタでどのように動作しますか?
製品のクエリを実行しているだけで(具体的なタグの種類は気にしない)、(抽象的な)タグdbsetを照会するだけです。 –
@AlexKrupka:あなたの答えをありがとう。残念ながら私は具体的なタイプを考慮する必要があります – Lorenzo