ASP.NET MVC 4将3位小数保存到SQL Server 2005

ASP.NET MVC 4将3位小数保存到SQL Server 2005,sql,asp.net-mvc-4,Sql,Asp.net Mvc 4,我必须在SQL Server 2005中设置小数点后3位。我只能从模型零件进行设置。但在SQL Server中,设置Salary属性的数据类型为decimal When I set like public decimal Salary { get; set; } 它将以21000.000而不是21000的形式保存到数据库中。如果我输入30000.75,则它将保存为30000.750。将此属性应用于模型中的属性: [DisplayFormat(DataFormatStrin

我必须在SQL Server 2005中设置小数点后3位。我只能从模型零件进行设置。但在SQL Server中,设置
Salary
属性的数据类型为
decimal

 When I set like

         public decimal Salary { get; set; }

它将以21000.000而不是21000的形式保存到数据库中。如果我输入30000.75,则它将保存为30000.750。

将此属性应用于模型中的属性:

[DisplayFormat(DataFormatString = "{0:#,##0}")]

您可以使用MVC DisplayFormat属性:

或者出于显示目的,您可以使用字符串并执行以下操作:

Salary.ToString("F");
这将导致输出:
30000.75

或:


这将导致输出:
30000.75

试试这个,您还必须在编辑模式下进行设置

 [DisplayFormat(DataFormatString = "{0:n3}", ApplyFormatInEditMode = true)]
 public decimal Amount { get; set; }

我也陷入了同样的困境,最终找到了解决办法。您可以重写DbContext.OnModelCreating()方法并配置精度

public class ApplicationDbContext : IdentityDbContext { protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity().Property(c => c.AssociationFee).HasPrecision(18, 3); } } 公共类ApplicationDbContext:IdentityDbContext { 模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder) { modelBuilder.Entity().Property(c=>c.AssociationFee).HasPrecision(18,3); } }
希望这有助于

它不能正常工作。在模型类中使用它。但是我在sql中使用的数据类型是什么。不确定你在问什么-sql Server数据类型可能是数值(12,3),例如,我没有选项从sql端进行设置。仅从模型部分输入13000.340,然后单击保存,当时它只会显示13000.000。我不想这样。我认为如果您从sql端处理它会很容易。您应该将变量类型decimal更改为.Net端的float,它肯定会得到解决。我使用它,但我没有权限使用它。在您的模型中更改..在模型中设置float。你可以这样做。如果您在sql中没有权限。 public class ApplicationDbContext : IdentityDbContext { protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity().Property(c => c.AssociationFee).HasPrecision(18, 3); } }