私がこの方法を持っているとしましょう:
public T GetByID(object[] pKeys)
{
DbQuery<T> dbq = mContext.GetDbSet<T>();
return dbq.SingleOrDefault(ent => ent.PrimaryKey.SequenceEqual(pKeys));
}
ent.PrimaryKey
ですobject[]
。
もちろん、これは動作しませんSequenceEqual()
。使用できるかもしれませんContains
が、これは順序を保持しません: {1, 2} は {2, 1} と等しくありません。
最初に使用してからいくつかのロジックを使用することもできますAsEnumerable()
が、それはテーブル全体をメモリにロードするため、受け入れられません。
これを達成する方法はありますか?
編集
メソッドをジェネリックにしました。それが実際のことであり、主キーが配列であるとより理にかなっているからです。
また、ここでのメソッドの目的は mContext.GetDbSet().Find(pKeys) で達成できることも指摘します。ただし、これは、質問に関係のない別の問題であるparent.childプロパティの使用dbq.Include(property)
または使用を複雑にします。mContext.Entry(wanted).Collection(property).Load()