「実際の」Linq2Entityプロバイダーと同じように式を検証IObjectSet<T>
できるようにするには、実装が必要です。出来ますか?
背景:
EF モデル (モデルファースト) をIObjectSet<T>
代わりに返すように変更したObjectSet<T>
ので、モデルを偽造して、必要なデータを返すことができます。
問題:基本的に のラッパーである
の実装を書きました。
これで問題ありませんが、LinqToObject を使用して imの実装をクエリすると、 Linq2Entity 式が有効であるという保証はありません。IObejctSet<T>
List<T>
IObjectSet<T>
提案された解決策:
私の実装では、実際List<T>
のプロバイダーを使用するだけです:
private class IObjectSetUnitTestImplementation<T> : IObjectSet<T> where T : EntityObject
{
private IQueryable _qry;
public IObjectSetUnitTestImplementation(List<T> lst)
{
_inner = lst;
_qry = _inner.AsQueryable();
Expression = _qry.Expression;
ElementType = _qry.ElementType;
Provider = _qry.Provider; //<--should be ObjectSet<T>'s provider
}
//Rest of implementaion omitted
}
だから私はこれを試しました:
ObjectContext context = null;
var _qry = new ObjectQuery<T>(typeof(T).Name, context) as IQueryable;
Expression = _qry.Expression;
ElementType = _qry.ElementType;
Provider = _qry.Provider;
しかし、それをフィードするコンテキストがありません。たとえあったとしても、データベースにアクセスしようとするだけです。
他に方法はありますか?