В моем приложении ASP.NET MVC 3 сейчас я должен использовать EF4.3 в качестве платформы ORM. Я хочу иметь возможность заменить его в будущем, в случае необходимости. Это требует определения интерфейса, который будет указывать на реализацию DbContext в случае EF.
Что я определяю в своем интерфейсе для запрашиваемого объекта?
Например, в моем случае я собираюсь сделать следующее, но не знаю, правильный ли это путь:
в моем интерфейсе:
IQueryable<AnonymousUser> AnonymousUsers { get; }
int SaveChanges();
в моем DbContext:
public DbSet<AnonymousUser> AnonymousUsers { get; set; }
IQueryable<AnonymousUser> IThoughtCatStorage.AnonymousUsers
{
get { return AnonymousUsers; }
}
Как видите, использование IQueryable - это один из способов абстрагирования DbSets.
Это лучший способ? (Я знаю, это звучит довольно дискуссионно, но я просто хочу знать, существует ли в настоящее время более обобщенный способ определения интерфейса доступа ORM.)