В Интернете много споров, когда речь заходит о классах Linq to Sql. Некоторые считают, что недостаточно абстракции, когда вы используете классы напрямую, а некоторые считают, что для этого они и нужны. На работе мы начинаем модернизацию нашего сайта, и мы используем MVC. Путь, по которому мы решили пойти, заключался в том, что каждый класс LINQ to SQL реализует интерфейс. IE:
public partial class LinqToSqlClass //generated class
{
public int Id{get;set;}
}
interface ILinqToSqlClass
{
int Id{get;set;}
}
public partial class LinqToSqlClass : ILinqToSqlClass
{
}
Это всего лишь малая часть. Затем у нас есть репозиторий, который получает любой из этих сгенерированных классов, но только в виде интерфейса этого типа. Таким образом, мы никогда не работаем напрямую с классами Linq to Sql. Есть много разных способов сделать это, но обычно я бы сказал да, если вы имеете дело с большой базой данных (особенно если схема может измениться) или если вы имеете дело с данными, которые могут поступать из более чем одного источника определенно не используйте классы напрямую.
Суть в том, что в этой главе Nerd Dinner есть много полезной информации, но при создании собственного проекта вы, очевидно, столкнетесь с собственными проблемами, так что принимайте их как есть.