Đang sử dụng EF để làm data access cho 1 dự án, lúc đầu tính dùng Dapper nhưng mà cty lại yêu cầu EF.
Cái entity mình sẽ không config dạng data annotation vì nhìn khá dơ mắt... Mà thay vào đó mình dùng fluent api để config constraint, FK, PK, relationship, ...
Entity thì mình không để Entity khác vô để tạo relationship mà dùng HasOne, WithOne, WithMany, ... ở cái modelBuilder của file context. Entity chỉ để Id của entity khác làm thành FK.
Cách này tránh việc EF gọi đệ quy các relationship với nhau tuy nhiên, sẽ không dùng Include của EF được mà phải sẽ phải dùng Join nếu muốn kết các bảng lại với nhau. Join nhiều bảng lại sẽ tạo thành nguyên 1 cục nhìn khá xấu, hiện tại không biết fix ntn ngoài việc sử dụng stored proc để thay thế.
Giới hạn lại độ dài của các field trong entity, nếu không thì EF nó sẽ đổi vd string thành varchar max khá là có hại.
Mấy cái query dạng get 1 chiều để mang lên cho UI thôi thì mình nghĩ tốt nhất nên thêm cái AsNoTracking để optimize performance
Cần mấy thím góp ý mấy cái trên hoặc góp ý thêm
Cái entity mình sẽ không config dạng data annotation vì nhìn khá dơ mắt... Mà thay vào đó mình dùng fluent api để config constraint, FK, PK, relationship, ...
Entity thì mình không để Entity khác vô để tạo relationship mà dùng HasOne, WithOne, WithMany, ... ở cái modelBuilder của file context. Entity chỉ để Id của entity khác làm thành FK.
Cách này tránh việc EF gọi đệ quy các relationship với nhau tuy nhiên, sẽ không dùng Include của EF được mà phải sẽ phải dùng Join nếu muốn kết các bảng lại với nhau. Join nhiều bảng lại sẽ tạo thành nguyên 1 cục nhìn khá xấu, hiện tại không biết fix ntn ngoài việc sử dụng stored proc để thay thế.
Giới hạn lại độ dài của các field trong entity, nếu không thì EF nó sẽ đổi vd string thành varchar max khá là có hại.
Mấy cái query dạng get 1 chiều để mang lên cho UI thôi thì mình nghĩ tốt nhất nên thêm cái AsNoTracking để optimize performance
Cần mấy thím góp ý mấy cái trên hoặc góp ý thêm