Если вы не отделяете свой интерфейс от классов linq с помощью промежуточного класса, вы не можете управлять с помощью контекста данных, собирающего мусор. Обычно с типами контекста данных экземпляры вы хотите избавиться от них, как только вы закончите с их использованием. Вот как вы можете сделать это в контексте linq to sql:
using (MyDataContext data = new MyDataContext())
{
SomeThing thing = data.Things(t => t.ID == 1);
return thing;
}
... the MyDataContext instance is gone
С блоком «using» вы избавляетесь от экземпляра MYDataContext в последнем «}». Однако, если вы сделаете это, вы получите ошибку, тогда попытаетесь использовать «вещь», потому что экземпляр контекста данных пропал. Если вы не избавляетесь от контекста данных, он остается без дела, пока в конце концов не соберет мусор.
Если вы введете промежуточный класс для отделения кода linq to sql от вызывающего приложения, вы все равно сможете избавиться от своего экземпляра контекста данных и вернуть те же данные (просто в другом объекте):
using (MyDataContext data = new MyDataContext())
{
SomeThing thing = data.Things(t => t.ID == 1);
SometThingElse otherThing = ConvertSomethingToSomethingElse(thing);
return otherThing;
}
... the MyDataContext instance is gone
Надеюсь, это поможет.