将 C# 十进制保存为 SQL 十进制(18,4)SQL [重复]

Posted

技术标签:

【中文标题】将 C# 十进制保存为 SQL 十进制(18,4)SQL [重复]【英文标题】:Saving C# decimal to SQL decimal(18,4) SQL [duplicate] 【发布时间】:2014-05-02 05:18:10 【问题描述】:

我有一个小问题。我有一个字段,我的客户希望将价格存储到小数点后 4 位(至少可以说很奇怪,但仍然如此)。到目前为止,我只能将 2 个小数位提交回数据库。

我使用 Code First 和 Entity 为我的数据库进行保存和 SQL Server 2008 R2。这是我对每个人的看法。

PurchaseOrder.cs(代码优先)

public virtual decimal ShippingCost  get; set; 

PurchaseOrderService.cs(服务层保存到实体)

public virtual void UpdatePurchaseOrder(PurchaseOrder purchaseOrder)

    if (purchaseOrder == null)
       throw new ArgumentNullException("purchase order");

    _purchaseOrderRepository.Update(purchaseOrder);

PurchaseOrder 表:

ShippingCost decimal(18, 4) NOT NULL

例如。运费在 UI 上输入为 10.5555。一直到服务层,它都保持着这个价值。一旦到达将其发送到实体进行保存的位置,数据库就不会保留超过 10.55 的这些额外值。

【问题讨论】:

【参考方案1】:

这里有一个实体框架默认值,它只使用 2 位小数。

Decimal precision and scale in EF Code First

展示了如何改变它。

【讨论】:

以上是关于将 C# 十进制保存为 SQL 十进制(18,4)SQL [重复]的主要内容,如果未能解决你的问题,请参考以下文章

试图从 c# 字符串转换为 SQL 二进制文件

在 C# 中将十六进制值从 SQL Server 转换为日期时间

关于使用C#将图片用二进制方式存储到sql server数据库中

C# 十进制到 SQL Server 钱

C#将richtextBox里的内容(图片文字)存入数据库

SQL Server 2005:将 varchar 值“1.23E-4”转换为十进制失败