Tôi có một lớp thực thể cơ sở MyCompany.Core.Model.User
mà là để được sử dụng cho tài sản chung của một thực thể User
:Loại 'Company.Model.User' và gõ 'Company.Core.Model.User' cả hai đều có tên đơn giản cùng của 'Người dùng' và do đó không thể được sử dụng trong cùng một mô hình
public class User
{
public string Username { get; set; }
public string Usercode { get; set; }
}
tôi cũng có một lớp bản đồ cơ sở MyCompany.Core.Model.UserMap
để thiết lập mã ánh xạ đầu tiên cho các cơ sở User
lớp:
public class UserMap<TUser> : EntityMapBase<TUser>
where TUser : User
{
public UserMap()
{
// Primary Key
this.HasKey(t => t.Usercode);
// Table & Column Mappings
this.ToTable("Users");
this.Property(t => t.Username).HasColumnName("Username");
this.Property(t => t.Usercode).HasColumnName("UserCode");
}
}
trong một riêng biệt assembly Tôi có một lớp dẫn xuất MyCompany.Model.User
được thừa kế từ lớp cơ sở User
và mở rộng nó với một số thuộc tính bổ sung:
public class User : Core.User
{
public string Surname { get; set; }
}
Bên cạnh đó tôi có một ánh xạ lớp có nguồn gốc MyCompany.Model.UserMap
để cung cấp các cấu hình bổ sung cho các thuộc tính bổ sung:
public class UserMap : Core.UserMap<User>
{
public UserMap()
{
this.Property(t => t.Surname).HasColumnName("Surname");
}
}
Tuy nhiên khi thêm MyCompany.Model.User
vào ngữ cảnh và đăng ký MyCompany.Model.UserMap
Tôi nhận được lỗi sau:
Các loại 'MyCompany.Model.User' và gõ 'MyCompany.Core.Model.User' cả hai đều có tên đơn giản cùng của 'Người dùng' và do đó không thể được sử dụng trong mô hình tương tự. Tất cả các loại trong một mô hình nhất định phải có tên đơn giản duy nhất. Sử dụng 'NotMappedAttribute' hoặc gọi Bỏ qua trong thông thạo API Mã đầu tiên để loại trừ một cách rõ ràng tài sản hoặc loại khỏi mô hình.
Điều này link cho biết bạn không thể có cùng một "tên đơn giản" trong mô hình hai lần.
Tại sao "tên đơn giản" của lớp cơ sở được đăng ký trong mô hình và có cách nào xung quanh nó để triển khai loại thừa kế thực thể này không?
Tôi nghi ngờ giải pháp đơn giản là đổi tên lớp được thừa kế; Tuy nhiên tôi muốn để tránh điều này vì có thể có nhiều Mục từ trong nhiều ngữ cảnh.
Lưu ý: Sử dụng Entity Framework 6.0.0-rc1 (phát hành trước)
Im chiến đấu với cùng một thứ. Bạn đã đến một giải pháp? –
@JasonCragun Thật không may là không. Tôi chỉ cần đổi tên lớp cơ sở thành UserBase. –