EF4将可空的十进制列映射到非空值属性



我使用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中有你的转换逻辑。下面介绍如何更改属性的可见性

最新更新