Мое веб-приложение MVC ASP.NET разделено следующим образом:
Web Application Layer
Views
Domain Layer
Repository
[Repository and Interfaces here]
Domain
[Domain Classes here]
Это довольно новое и развивающееся, и я начинаю видеть некоторые проблемы с ним.Мои классы домена являются объектами POCO - я использую Linq to SQL «Code First», поэтому я добавляю свои собственные классы и украшаю их для работы с ними в репозитории.Сначала все шло хорошо, я мог добавить бизнес / доменную логику к классам, и это казалось довольно чистым.
Совсем недавно я создал несколько представлений базы данных, которые основаны на одной и той же «базовой» таблице - таблице «Оборудование».Я создаю класс домена POCO для каждого представления, чтобы я мог читать из него в своем хранилище.Проблема, с которой я столкнулся, заключается в том, что логика домена, добавленная к базовому классу домена Equipment, недоступна для моих новых представлений.Я не могу использовать общий базовый класс, так как Linq to SQL не работает с этим, если вы используете атрибуты для украшения ваших классов.Не использовать представления не вариант, потому что они полезны и за пределами веб-приложения.
Есть ли хорошее решение для этого, я задаюсь вопросом, возможно, мне нужно подумать о разделении классов, чтоХранилище работает с отдельным набором «классов доменов», чтобы решить эту проблему?
[Редактировать] Больше информации по запросу.Например, мой класс «Equipment» (который является классом домена, который сопоставлен с базой данных) содержит следующий код:
public string EquipmentDescription
{
get
{
return String.Format("U{0}{1}{2}",
String.Format("{0}", UPos.ToString("00")),
String.IsNullOrEmpty(EquipmentName) ? "" : ": " + EquipmentName,
String.IsNullOrEmpty(Label) ? "" : " - " + Label
);
}
}
Теперь у меня есть представление в базе данных «EquipmentWithCableDetails», котороесодержит дополнительную полезную информацию с деталями оборудования - поэтому я создаю класс для моделирования этого представления (чтобы иметь возможность читать из него).В коде, который работает с этим новым классом, я хочу отобразить описание EquipmentDescription, но это свойство существует только в классе Equipment.
Спасибо!