我正在使用EF4的POCO(无代理)。
在数据库中,我有这个可以为空的十进制列:
<Property Name="AMOUNT" Type="decimal" Precision="12" Scale="2" />
在我的POCO上,我有这个不可为空的值属性:
public decimal Amount { get; set; }
如果数据库中的值为null
,我希望将该属性设置为0
。我怎样才能做到这一点?我不希望在这里有Nullable
属性,否则我必须用GetValueOrDefault()
代码污染我的业务逻辑。
[这question似乎就像我问的那样,但我不确定它是否得到了真正的回答。]
答案 0 :(得分:2)
不幸的是,您必须在POCO中使用可以为空的十进制数,因为EF不提供任何可以放置转换逻辑的简单类型映射/类型转换器。类型必须相同才能使其有效。
在EDMX的情况下,有一个可能的丑陋的解决方法。您可以将列映射到非公共属性并公开另一个未映射的公共属性(在POCO类的部分部分中),并且您将在其getter和setter中拥有转换逻辑。 Here描述了如何改变财产的可见性。