2

我使用http://msdn.microsoft.com/en-us/data/jj200620视频来了解如何创建访问旧 SQL Server 数据库的 C# 控制台应用程序。

我将数据库中的一些字段设置为Money. 实体框架从现有数据库创建了一个模型,并创建了一个类型为 的属性decimal?。这使得在 C# 中使用它变得很有趣,因为函数变为:

private static string WriteMoney(decimal? item, string output)

这工作正常。

我在网上找不到任何东西decimal?。显然Money是一个decimal,我可以通过更改 SQL 数据库类型来解决这个问题。这不会引起麻烦,只是一个有趣的观察。

有人遇到过这个吗?

4

2 回答 2

2

SQLMONEY是一种有四个小数点decimal 的类型。
它在功能上类似于 SQLDECIMAL(19,4)

MONEY但是,如果您要进行任何非标量算术运算,则不建议使用该类型,而应使用适当的DECIMAL类型:

您应该在 SQL Server 中选择 MONEY 还是 DECIMAL(x,y) 数据类型?

double这是与floatbase-2 单位的重要区别

至于可空性,如果在模式中以这种方式设置所有 SQL 类型,它们都可以是可空的。如果您不希望 EF 使用可为空的类型,那么您需要使 SQL 字段不可为空并刷新您的 dbml。

于 2013-07-22T15:43:24.300 回答
1

decimal?只是语法糖 Nullable<decimal>

Nullable如果您还不了解它,您可能想继续阅读。

C# 没有 SQL 那样的“金钱”类型,因此 EF 必须获得下一个最接近的东西,即decimal. decimal只是System.Decimal.

我猜你money的 SQL 类型的列允许空值。这就是为什么它decimal?不仅仅是 plain decimal,因为System.Decimal是 struct 并且不能为空。

于 2013-07-22T15:44:04.180 回答