我想将所有小数位数的精度设置为(18,6)。在EF6这很容易:实体框架核心 - 将小数精度和小数位数设置为所有小数属性
modelBuilder.Properties<decimal>().Configure(x => x.HasPrecision(18, 6));
但我似乎无法在EF核心中找到类似的东西。删除级联删除惯例并不在EF6那样简单,所以我找到了以下解决方法:
EF6:
modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
EF核心:
foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
relationship.DeleteBehavior = DeleteBehavior.Restrict;
后,我读this,我尝试类似的方法:
foreach (var entityType in modelBuilder.Model.GetEntityTypes()
.SelectMany(x => x.GetProperties())
.Where(x => x.ClrType == typeof(decimal)))
{
// what to do here?
}
我想如果我在右边t机架以及如何继续,否则,我应该开始在所有的decimal
属性上放置数据注释。
有一个非常粗暴的方法,但不知道是否有更优雅和灵活的方法。你可以使用'modelBuilder.Entity(c => c.HasColumn(“DECIMAL(10,6”))'来指定列的类型,但它可能会将你与特定类型的DB结合起来,因为类型是具体的数据库 –
Tseng
这种方式,我必须列出'OnModelCreating'方法中的所有小数属性,这与向所有这些方法添加DataAnnotations没什么不同,我试图避免的东西:) – GregoryHouseMD
因为我必须继续前进开发,我手动设置了所有198个十进制属性(希望我没有错过任何),但是如果有人想到我怎么可以循环遍历所有这些,请让我知道 – GregoryHouseMD