IIRC, если вы не хотите использовать свой уровень базы данных без понимания запросов LINQ (используя шаблон репозитория), вам следует взглянуть на LINQ to NHibernate; в этом случае вы будете в значительной степени кодировать IQueryable<T>
результаты, которые должны переводиться большую часть времени. (Хотя вы должны действительно протестировать это заранее, потому что каждый поставщик отличается в своей поддержке LINQ.)
Тем не менее, 1- * отношения в типах сущностей, вероятно, не будут иметь один и тот же тип по умолчанию (обычно это EntitySet<T>
в LINQ-to-SQL и IList<T>
в NHibernate), но если вы можете принудительно использовать оба LINQ -to-SQL и NHibernate для использования IList<T>
или IEnumerable<T>
для таких отношений, это также должно работать.
Если вы только после совместимости во время компиляции, различие между различными типами коллекций не должно быть большой проблемой, если вы придерживаетесь универсальных типов. Например, если ваше отображение NHibernate использует IList<T>
, а LINQ-to-SQL использует EntitySet<T>
, просто придерживайтесь методов IList<T>
, и вы будете в безопасности.
Просто следите за ленивой и энергичной разницей в загрузке каждой платформы.