Если вы хотите, чтобы ваш класс Customer был простым объектом без привязки к LINQ, вам, скорее всего, потребуется написать метод mapper для преобразования вашего объекта Customer на основе LINQ в ваш простой объект домена Customer. LINQ to SQL не имеет такой встроенной функциональности.
Я начал оборачивать свои методы отображения в метод расширения для удобства чтения, и это действительно помогает сохранять код репозитория простым. Например, пример метода CustomerRepository, который выглядит так:
public Customer GetById(int id)
{
return dataContext.LINQCustomers.Where(c => c.Id == id)
.Single()
.ToDomainObject();
}
и метод ToDomainObject () определяется в методе расширения, например:
public static class ObjectMapper
{
public static Customer ToDomainObject(this Customer linqObject)
{
var domainObject = null
if (linqObject != null)
{
domainObject = new Customer
{
Id = linqObject.Id,
FirstName = linqObject.FirstName,
LastName = linqObject.LastName
}
}
return domainObject;
}
}
или что-то подобное. Вы можете сделать то же самое, чтобы преобразовать ваш доменный объект обратно в объект LINQ для передачи обратно в ваш репозиторий для сохранения.