Tôi đã cố gắng tìm ra cách thiết lập độ chính xác thập phân cho EF7 (Beta 4) mà không có may mắn.Entity Framework 7 Đặt độ chính xác thập phân cho trình tạo mô hình
Tôi đã chờ đợi để làm một cái gì đó như:
modelBuilder.Entity<SomeClass>().Property(p => p.DecimalProperty).Precision(10, 6)
này không xuất hiện để có sẵn, nhưng tôi đã có thể tìm thấy những lớp sau trong kho trong GitHub:
Không có ví dụ về việc sử dụng các lớp RelationalTypeMapping hoặc các chữ ký phương thức với chúng. Có lẽ điều này chỉ được sử dụng như một phần của bản đồ api để lấy thông tin?
Một nơi tôi có thể mong đợi điều này là như sau:
modelBuilder.Entity<SomeClass>().Property(p => p.DecimalProperty).ForRelational().ColumnType()
hoặc
modelBuilder.Entity<SomeClass>().Property(p => p.DecimalProperty).ForSqlServer().ColumnType()
Những chỉ mất một chuỗi, là chức năng này chỉ chưa được thực hiện hoặc tôi chỉ không nhìn ở đúng chỗ?
Chỉnh sửa: Chỉ cần nhận ra rằng chuỗi có thể là kiểu .ColumnType ("thập phân (10,6)") cho đến khi điều này được xây dựng thêm nữa, vẫn không nhớ làm rõ không sử dụng dây cho
chỉnh sửa này: sau khi làm rõ từ bricelam tôi đã kết thúc việc tạo ra phần mở rộng sau đây để sử dụng cho bây giờ để tránh sử dụng các chuỗi, và tôi đánh giá cao sự đơn giản của cách tiếp cận của họ:
public static RelationalPropertyBuilder DecimalPrecision(this RelationalPropertyBuilder propertyBuilder, int precision, int scale)
{
return propertyBuilder.ColumnType($"decimal({precision},{scale})");
}
Ví dụ sử dụng:
modelBuilder.Entity<SomeClass>().Property(p => p.DecimalProperty).ForRelational().DecimalPrecision(10,6);
Edit: Làm sửa đổi cho RC1
tôi đã không kiểm tra những nêu ra, nhưng tôi chỉ ném lại với nhau sau 2 mẫu của những gì điều này có lẽ sẽ giống như với RC1
public static PropertyBuilder DecimalPrecision(this PropertyBuilder propertyBuilder, string precision, string scale)
{
return propertyBuilder.HasColumnType($"decimal({precision},{scale})");
}
public static PropertyBuilder SqlDecimalPrecision(this PropertyBuilder propertyBuilder, string precision, string scale)
{
return propertyBuilder.ForSqlServerHasColumnType($"decimal({precision},{scale})");
}
Vì tôi chưa thử điều này tôi không chắc chắn đó sẽ là cách sử dụng chính xác giữa "HasColumnType" hoặc "ForSqlServerHasColumnType", nhưng hy vọng điều này sẽ chỉ một người nào đó đi đúng hướng.
Vì tất cả các thuộc tính thập phân của tôi có cùng độ chính xác, bất kỳ cách nào để thực hiện điều này trên tất cả trong một dòng? Tôi đã sử dụng nó với EF6: 'modelBuilder.Properties() .Cấu hình (x => x.HasPrecision (18, 6)); ' –
GregoryHouseMD
@reala valoro, tôi đã cập nhật chi tiết để phản ánh các thay đổi RC1 –