リポジトリでプリコンパイルされたlinqクエリを使用することは可能ですか? ObjectContextは、Iコンテキスト:現在の私のリポジトリは、私は私の実際のコンテキストクラスMyEntitiesを使用することにより、以下のようにしてプリコンパイルされたクエリを作成することができるだろうEFのリポジトリパターンを使用したプリコンパイルされたlinqクエリの使用
public class CustomerRepository : EntityRepository
{
private readonly IContext _context;
public CustomerRepository(UnitOfWork uow)
{
_context = uow.context;
}
}
のように設定しています。
static Func<ObjectContext, int, Customer> _custByID;
public static Customer GetCustomer(int ID)
{
if (_custByID == null)
{
_custByID = CompiledQuery.Compile<MyEntities, int, Customer>
((ctx, id) => ctx.Customers.Where(c => c.CustomerID == id).Single());
}
return _custByID.Invoke(_context, ID);
}
問題は、TArg0のコンパイル方法がObjectContextから派生した型であることです。 IContextでリポジトリを使用する私の全目的が、上記の意味を使ってエンティティフレームワーク関連のコードを隠すことでした。プリコンパイルされたlinqクエリの使用方法はどうすればよいですか?私はそれらを私のモデルとエンティティフレームワークを参照する別のクラスライブラリに移動すべきか、リポジトリを間違って理解していますか?私はASP.netアプリケーションでEF4を使用しています。
意味があります。私は主な懸念がテストであると信じています。私は私のリポジトリ機能をテストするために偽のコンテキストを使用していました。私は、私は私のリポジトリ機能をテストすることができないと信じています今すぐデータストロークを打つことなく、プリコンパイルされたlinqクエリを使用して? – nighthawk457
@ nighthawk457 EFに関連するコードは単体テストではなく、統合テストされています。 [この質問](http://stackoverflow.com/questions/5609508/asp-net-mvc3-andentity-framework-code-first-architecture)を参照してください。 – Eranga