Tôi làm cách nào để thay đổi quy ước đặt tên của bảng nhiều thành viên được tạo tự động?Làm thế nào để thay đổi quy ước đặt tên của các mối quan hệ bảng nhiều người?
Giả sử tôi có hai lớp:
public class User
{
public int UserId { get; set; }
public virtual List<Role> Roles { get; set; }
}
public class Role
{
public int RoleId { get; set; }
public virtual List<User> Users { get; set; }
}
By Mặc định, điều này sẽ tạo ra một bảng gọi là UserRoles.
tôi có thể thay đổi tên của các bảng một để UsersInRoles, ví dụ, bằng cách sử dụng sau đây trong override OnModelCreating của DbContext tôi:
modelBuilder.Entity<User>()
.HasMany(p => p.Roles)
.WithMany(p => p.Users)
.Map(mc =>
{
mc.MapLeftKey("UserId");
mc.MapRightKey("RoleId");
mc.ToTable("UsersInRoles");
});
Tuy nhiên, những gì tôi thực sự muốn làm thay đổi quy ước đặt tên để theo mặc định, tất cả các bảng nhiều thành viên được tạo tự động sử dụng quy ước mới này. Tôi không thể tìm ra cách để làm điều đó, hoặc nếu nó thậm chí có thể. Tôi không muốn phải chỉ định 9 dòng mã bổ sung mỗi khi tôi chỉ định một trong các mối quan hệ này.
Tôi hiện đang sử dụng phiên bản EF 6.0.0-rc1.
Vì tò mò tại sao bạn thực sự muốn làm điều đó? Mã hóa theo quy ước mất tất cả sự quyến rũ của nó khi bạn tiếp tục có những cái khác nhau. –
Bạn có thể xem [Quy ước tùy chỉnh] (http://msdn.microsoft.com/en-us/data/jj819164.aspx). –
@TonyHopkinson, Trong kịch bản thực tế của tôi, tôi viết một khung làm thay đổi tất cả các tên bảng với một tiền tố dựa trên vị trí "thành phần" của chúng (chẳng hạn như Core, HR, Finance, v.v.). Trong khi tôi có thể viết một bản tóm tắt để đổi tên bảng tiêu chuẩn, nó không hoạt động với các bảng nhiều đến nhiều này, và tôi không thể tìm ra cách. Đối với ví dụ của tôi, tôi đã sử dụng quy ước đó trong một thời gian dài và rất thích gắn bó với nó. –