Я уже немного перечитал и думаю, что следующее невыполнимо, но я хотел бы получить подтверждение экспертов, если это возможно, и, возможно, совет по поводу «лучшего» обходного пути.
Во всехавтоматически сгенерированные классы linq-to-sql Я заканчиваю тем, что удваиваю все свойства, чтобы выполнять проверки значений, поскольку они установлены, скажем, у меня есть класс Person со свойством Name, на котором я в итоге выполняю:
public partial class Person
{
public string Name
{
get { return this._Name; }
set
{
if (!string.IsNullOrEmpty(value))
{
value = value.trim();
this._Name = value.Substring(0, Math.Min(value.Length, 200));
}
else
throw new InvalidOperationException("Person name cannot be blank");
}
}
}
Простая проверка, чтобы гарантировать, что при сохранении в базе данных имя не будет превышать максимальной длины.
Это означает, что в итоге я удваиваюсь почти на каждом отдельном свойстве из автоматически сгенерированногокласс, и это создает большой беспорядок, потому что в итоге все они названы чем-то похожими.
Я попытался добавить слой поверх частичных классов, создав собственное представление объектов, но столкнулся с проблемами при создании экземпляров классовкоторый зависел один от другого ... Скажем, у человека есть компания, вы инстанцируете человека и его компанию, которая инстаназначает людей для компании, которая реанимирует компании и т.д. ...
Есть ли какой-нибудь "хороший" способ сделать то, что я пытаюсь сделать с частичными классами?Если нет, то какие альтернативы работают лучше всего?Может быть, наследовать каждый частичный класс и переопределять свойства?Использование событий OnChange для выполнения проверок?