1

我在 EF4 中使用 POCO(无代理)。

在数据库中,我有这个可为空的十进制列:

<Property Name="AMOUNT" Type="decimal" Precision="12" Scale="2" />

在我的 POCO 上,我有这个不可为空的值属性:

public decimal Amount { get; set; }

如果数据库中的值为null,我希望将属性设置为0。我怎样才能做到这一点?我宁愿Nullable在这里没有属性,否则我不得不用GetValueOrDefault()代码污染我的业务逻辑。

[这个问题看起来就像我在问什么,但我不确定它是否真的得到了回答。]

4

1 回答 1

2

不幸的是,您必须在 POCO 中使用可为空的小数,因为 EF 不提供任何简单的类型映射/类型转换器,您可以在其中放置转换逻辑。类型必须相同才能使其工作。

在 EDMX 的情况下,有一种可能的丑陋解决方法。您可以将列映射到非公共属性并公开另一个不会映射的公共属性(在 POCO 类的部分部分中),并且您将在其 getter 和 setter 中拥有转换逻辑。此处描述了如何更改属性的可见性。

于 2011-07-18T20:45:06.133 回答