4

我首先要说我的十进制数据类型定义为十进制(18,5):

在此处输入图像描述

在我的应用程序到达数据库之前来自我的应用程序的值是:

在此处输入图像描述

到目前为止,您可以看到,一切看起来都很好。我应该在我的数据库表中看到 column 的值 0.47588 Capsule105。但是,在我的记录保存到数据库后,我查看它插入的记录——看看最后一行:

在此处输入图像描述

该值不应在小数点后两位后停止。它应该到我数据库中定义的最后一个小数位,对吗?

这是我的InsertOrUpdate方法(与 VS 中的模板一起提供):

public void InsertOrUpdate(CalculatedResults calculatedresults)
{
    if (calculatedresults.Pk == default(int)) {
        // New entity
        context.CalculatedResults.Add(calculatedresults);
    } else {
        // Existing entity
        context.Entry(calculatedresults).State = EntityState.Modified;
    }
}

我正在使用 Code First 方法并从我的模型中生成我的数据库。

任何想法这里发生了什么???请帮忙!!

4

2 回答 2

4

我有一个类似的问题,所以也许这会有所帮助:我必须在DbContext. 就我而言,数据库中的字段是 type Money,而 models 属性的 C# 类型是Decimal

modelBuilder.Entity<MyEntity>().Property(e => e.Value).HasColumnType("Money");

不知道,但是如果您将其更改为“十进制”甚至“十进制(18,5)”,如果可能的话,它可能会起作用。或者拿起 ta.speot 的评论:

modelBuilder.Entity<MyEntity>().Property(e => e.Value)
            .HasColumnType("Decimal")
            .HasPrecision(18, 5);
于 2013-04-17T21:10:51.977 回答
0

@迈克马克

您可以像下面更改DBContext 类中的 OnModelCreating方法一样解决此问题

protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Table1>().Property(a => a.price).HasPrecision(18, 5); }

于 2018-03-30T11:24:33.090 回答