Нет, я не думаю, что этого недостаточно.
AFAIK - основные поставщики LINQ для Entity Framework (ObjectQuery<T>
) предназначены для поставщика SQL Server.
Я бы посоветовал инкапсулировать вашу логику в репозиторий и поддерживать интерфейс на высоком уровне (без зависимости от EF):
public interface IRepository<T> where T : class
{
public T FindSingle(int id);
public ICollection<T> FindAll(Expression<Func<T,bool>> predicate);
public void Add(T entity);
public void Remove(T entity);
}
Затем реализуйте реализацию SQL Server с помощью провайдеров EF LINQ (например, SqlServerRepository<T> : IRepository<T>
). Затем, когда вы переключаетесь на MySQL, реализуете другую реализацию репозитория (например, MySqlRepository<T> : IRepository<T>
)
Ключ - не использовать такие вещи, как IQueryable<T>
для вашего репозитория, поскольку это позволяет применять код LINQ к вашему DAL, что может быть неприменимо для SQL Server и MySQL.