Tôi muốn đặt độ chính xác của tất cả các thuộc tính thập phân thành (18,6). Trong EF6 này là khá dễ dàng:Lõi khung thực thể - thiết lập độ chính xác và tỷ lệ thập phân cho tất cả các thuộc tính thập phân
modelBuilder.Properties<decimal>().Configure(x => x.HasPrecision(18, 6));
nhưng tôi dường như không thể tìm thấy bất cứ điều gì tương tự như sau trong EF Core. Loại bỏ các thác xóa ước là không đơn giản như trong EF6 vì vậy tôi tìm thấy cách giải quyết như sau:
EF6:
modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
EF Core:
foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
relationship.DeleteBehavior = DeleteBehavior.Restrict;
và sau khi tôi đọc this, tôi đã thử một cách tiếp cận tương tự:
foreach (var entityType in modelBuilder.Model.GetEntityTypes()
.SelectMany(x => x.GetProperties())
.Where(x => x.ClrType == typeof(decimal)))
{
// what to do here?
}
Tôi muốn nếu tôi ở bên phải giá và cách tiếp tục, hoặc nếu không, tôi có nên bắt đầu đặt chú thích dữ liệu trên tất cả các thuộc tính decimal
hay không.
Có phương pháp khá thô bạo, nhưng không biết nếu có thanh lịch và linh hoạt hơn. Bạn có thể cấu hình nó bằng 'modelBuilder.Entity (c => c.HasColumn (" DECIMAL (10,6 "))' để chỉ định kiểu cột. Tuy nhiên, nó có thể ghép bạn với một số loại DB nhất định từ các kiểu DB cụ thể –
Tseng
Bằng cách này tôi phải liệt kê tất cả các thuộc tính thập phân trong phương thức 'OnModelCreating' mà không khác với việc thêm DataAnnotations vào tất cả chúng, cái mà tôi đang cố tránh :) – GregoryHouseMD
Vì tôi phải tiếp tục phát triển, tôi thiết lập tất cả 198 thuộc tính thập phân theo cách thủ công (hy vọng tôi không bỏ lỡ bất kỳ), nhưng nếu ai đó nghĩ về cách tôi có thể lặp lại tất cả chúng, vui lòng cho tôi biết – GregoryHouseMD