问题描述
|
假设我有以下POCO:
[DataMember]
public Nullable<int> MetricId
{
get { return _metricId; }
set
{
if (_metricId != value)
{
_metricId = value;
OnPropertyChanged(\"MetricId\");
}
}
}
private Nullable<int> _metricId;
我想验证that1ѭ严格大于0
显然,如果我将此规则作为数据注释放在此类中,则下次我重新生成poco时,它将被覆盖。我应该把这个逻辑放在哪里?
谢谢!
解决方法
我似乎记得这样的建议:利用部分类并滚动实现您不想被覆盖的逻辑的部分类。
,在阅读注释和响应之后,似乎创建另一个类很好,但是通过将其分类,它将我的业务逻辑直接与实体框架和生成的POCO代码联系起来。这令人担忧,因为当EF4更改为EF5,而T4模板更改为T5模板时,我的代码将如何处理?另外,我只是不喜欢将局部类用作普通类。
相反,有人仍然可以提供更好的答案(请这样做),我认为创建一个独立于框架的对象(一个不与EF绑定)会更好。然后,我可以将其映射到通用业务对象。就像是:
static Customer Map(CustomerPOCO poco)
{
return new Customer
{
CustomerId = poco.CustomerId
...
...
};
}
,使用局部类并不是很干净,可以说您拥有产品抽象类以及在线产品和商店产品的派生类。两者都继承价格属性,但价格不同。假设业务逻辑也可能不同。现在,您又有了另外两个不需要的类。在更大的系统中,它成倍增加。