我们的项目中有一个代码优先的数据库,在我们的一个模型中有一个小数。
我们将小数精度设置为(6,2),我们在mysql数据库的结构中检查了它。
db的整理是utf8_unicode_ci
。
我们从视图中将4.00
的值保存到数据库中,这是正确的。但是,现在我们尝试从数据库中获取值,而不是获取4.00
或4.00m
,我们得到400M
。逗号只是已经。
所有帮助表示赞赏。
(但是,请不要建议除以100.那个丑陋的修复你知道吗。)
修改 型号:
public class RSU
{
public int Id { get; set; }
public virtual RSUSlot SlotRef { get; set; }
public decimal? Length { get; set; }
}
INSERT代码:
using(dbCOntext db = new dbCOntext())
{
db.Add(new RSU{ Length = 4.00m });
db.SaveChanges();
}
GET:
public static CabinetConfig GetCabinet(M4CDbContext db, int id)
{
return db.CabinetConfig
.Include(m => m.RSURef)
.Where(m => m.Id == id)
.FirstOrDefault();
}
答案 0 :(得分:0)
我不确定为什么这不适用于MySQL,但想法是:
使用Fluent API
方法为您的班级创建EntityTypeConfiguration
:
public class RSUConfiguration : EntityTypeConfiguration<RSU>
{
public RSUConfiguration()
{
Property(x => x.Length)
.HasPrecision(6, 2);
}
}
并将其添加到您的modelBuilder
:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<RSU>().Property(x => x.Length).HasPrecision(6, 2);
modelBuilder.Configurations.Add(new RSUConfiguration());
base.OnModelCreating(modelBuilder);
}