我的ASP.NET MVC Web应用程序被分割这样的:共享域逻辑
Web Application Layer
Views
Domain Layer
Repository
[Repository and Interfaces here]
Domain
[Domain Classes here]
这是相当新的,不断发展的,而我开始看到它的一些问题。我的域类是POCO对象 - 我使用Linq to SQL“Code First”,因此我添加了自己的类并装饰它们以在存储库中与它们一起使用。起初,这很顺利,我可以将商业/领域逻辑添加到类中,看起来很干净。
最近,我创建了许多基于相同的“核心”表 - “设备”表的数据库视图。我为每个视图创建一个POCO域类,以便我可以在我的Repoisitory中读取它。我遇到的麻烦是,添加到核心设备域类的域逻辑不适用于我的新视图。我无法使用公共基类,因为如果您使用属性来装饰类,则Linq to SQL不适用于此类。不使用视图不是一种选择,因为它们在Web应用程序之外也很有用。
有没有一个很好的解决方案,我想知道如果我可能需要考虑从单独的“域类”集合中分离存储库的类来解决这个问题?
[编辑]更多信息按要求。 例如,我的“设备”类,(这是映射到数据库中的域类)包含以下代码:
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类中。
谢谢!
你有没有尝试使你的域类作为部分类?在两个地方定义。 – 2011-03-24 10:26:56
不要认为这有帮助 - 我可能有3个类 - “EquipmentView1”,“EquipmentView2”,“EquipmentView3”,它们不是全部相同的类 - 但它们具有共同的核心功能 – 2011-03-24 10:59:09
您可以举一个例子或两个你正在谈论的域逻辑类型? – 2011-03-24 17:05:21