我使用poco(无代理)与EF4。
在数据库中,我有这个可空的十进制列:
<Property Name="AMOUNT" Type="decimal" Precision="12" Scale="2" />
在我的POCO中,我有这个非空值属性:
public decimal Amount { get; set; }
如果数据库中的值是null
,我希望将属性设置为0
。我怎样才能做到这一点呢?我不希望这里有Nullable
属性,否则我必须用GetValueOrDefault()
代码污染我的业务逻辑。
不幸的是,您必须在POCO中使用可空小数,因为EF不提供任何简单的类型映射/类型转换器,您可以在其中放置转换逻辑。类型必须相同才能正常工作
在EDMX的情况下,有一个可能丑陋的解决方案。你可以将你的列映射到非公共属性,并公开另一个不会被映射的公共属性(在你的POCO类的部分),你将在它的getter和setter中有你的转换逻辑。下面介绍如何更改属性的可见性