私のASP.NET MVC 3アプリケーションでは、今のところORMフレームワークとしてEF4.3を使用しています。私は将来必要になったときにそれを代用する能力を持ちたいと思っています。これは、EFの場合にDbContext実装を指すインタフェースの定義を必要とします。ORMプロバイダの抽象化
クエリ可能オブジェクト用のインターフェイスでは何を定義しますか?
私のインターフェイスに::私は次のことをするつもりですが、それは行くための正しい方法かどうかわからない私の場合、例えば
私DbContextで
IQueryable<AnonymousUser> AnonymousUsers { get; }
int SaveChanges();
:
public DbSet<AnonymousUser> AnonymousUsers { get; set; }
IQueryable<AnonymousUser> IThoughtCatStorage.AnonymousUsers
{
get { return AnonymousUsers; }
}
ご覧のとおり、IQueryableを使用すると、DbSetsを抽象化することができます。
これが最善の方法ですか? (これはむしろディスカッションのように聞こえるが、現状ではORMアクセスインターフェイスを定義するためのより一般化された方法があるかどうかを知りたいだけだ。)
おそらく良い考えではありません:http://stackoverflow.com/questions/1699607/asp-mvc-repository-that-reflects-iqueryable-but-not-linq-to-sql-ddd-how-to- que/1699756#1699756 –
抽象化の価格は単に高すぎるかもしれません:http://ayende.com/blog/4567/the-false-myth-of-encapsulating-data-access-in-the-dal –