Мы часто используем partial
реализации, но я не считаю это запахом кода.На самом деле, я думаю, что это намного лучше, чем оборачивать их большим количеством кода.В этот момент вы могли бы также пропустить RIA и написать свой собственный трекер изменений WCF ... но я отвлекся.
Если вам нужна модель с богатым доменом, то реализации partial
являются отличным способом сделать это.,Генератор кода по умолчанию создает частичные методы для наиболее значимых точек в жизненном цикле объекта RIA WCF.Внедрив эти частичные функции, вы отойдете от Анемичной доменной модели .
. Как вы заявили выше, вы можете реализовать интерфейс и создать свои собственные методы и свойства.IOW вы не ограничены в реализации заглушек partial
.Если ничего не помогает, измените генератор кода по умолчанию по своему вкусу.Я сделал для удаления sealed
из каждой сущности, чтобы облегчить тестирование.
ОБНОВЛЕНИЕ: Вот мой код для удаления sealed
[DomainServiceClientCodeGenerator(typeof (CustomClientCodeGenerator), "C#")]
public class CustomClientCodeGenerator : CSharpClientCodeGenerator
{
private EntityGenerator _entityGenerator;
protected override EntityGenerator EntityGenerator
{
get { return _entityGenerator ?? (_entityGenerator = new CustomEntityGenerator()); }
}
private class CustomEntityGenerator : CSharpEntityGenerator
{
public override string TransformText()
{
return base.TransformText().Replace("sealed ", string.Empty);
}
}
}