我正在尝试这种代码优先的方法,但是现在我发现System.Decimal类型的属性被映射到类型为October(18,0)的sql列。
如何设置数据库列的精度?
Dave Van den Eynde的答案现在已过时。从EF 4.1开始,有2个重要更改,ModelBuilder类现在是DbModelBuilder,现在有DecimalPropertyConfiguration.HasPrecision方法,其签名为:
public DecimalPropertyConfiguration HasPrecision( byte precision, byte scale )
其中precision是db将存储的总位数,而不管小数点在哪里,而scale是它将存储的小数位数。
因此,无需遍历所示的属性,而可以仅从中调用
public class EFDbContext : DbContext { protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder) { modelBuilder.Entity<Class>().Property(object => object.property).HasPrecision(12, 10); base.OnModelCreating(modelBuilder); } }