Если я использую LinqToSQL для генерации класса, я всегда создаю облегченную версию класса контейнера данных с постфиксом Data. Затем я использую этот класс для передачи данных на клиент / сервер.
Возможно, я не совсем описываю это, но я считаю, что это довольно распространенная практика.
Скажем, LinqToSql предоставляет вам класс Car с int id, int doors, string string, int wheel, основанными на столе Cars. Я бы создал
public class CarData
{
[Required(ErrorMessage = "ID is Required")]
public int id { get; set; }
[Required(ErrorMessage = "doors are Required")]
public int doors { get; set; }
[Required(ErrorMessage = "color is Required")]
public string color { get; set; }
[Required(ErrorMessage = "wheels are Required")]
public int wheels { get; set; }
}
Вы можете даже использовать linq, чтобы выбрать новый из них через
var myCar =
from c in MyDataContext.Cars
where c.id == 1
select new CarData()
{
id = c.id,
doors = c.doors,
color = c.color,
wheels = c.wheels
};
Вы также сохраните linq to sql функциональность отложенного выполнения вместе с этим. В любом случае, вы бы добавили эти атрибуты в этот класс «Данные» (как показано), чтобы у вас был специализированный легкий класс, который легко сериализуется и имеет все нужные вам атрибуты проверки.