Tôi quan tâm đến cách tôi có thể ánh xạ hai thực thể vào cùng một bảng, bằng cách sử dụng mã đầu tiên. Dưới đây là ví dụ:Mã EF Đầu tiên Nhiều thực thể vào cùng một bảng
public class User
{
[Key]
public int UserId { get; set; }
public string Name { get; set; }
public byte Age { get; set; }
public bool Active { get; set; }
public DateTime Created { get; set; }
}
public class UserViewModel
{
[Key]
public int UserId { get; set; }
public string Name { get; set; }
public byte Age { get; set; }
}
Về cơ bản tôi chán ngấy với kho lưu trữ. Tôi muốn lập bản đồ tất cả các mô hình có thể cho cổng cấu hình, cổng thông tin người dùng, các dịch vụ khác trong trình mô hình hóa và chỉ sử dụng DbContext cho mọi thứ. Tôi muốn thiết lập lớp người dùng là đầu của hệ thống phân cấp và một lớp xây dựng cơ sở dữ liệu, trong khi tất cả các mô hình khác chỉ nên có cho các ứng dụng khác nhau.
Tôi không muốn sử dụng tự động hóa. Tôi cũng đã thực hiện một số tiền công bằng của mã hóa thủ công mà chỉ lãng phí thời gian của tôi, và mỗi sửa đổi duy nhất đòi hỏi tôi phải quay trở lại kho và recode - mà làm phiền tôi.
Tôi đã cố gắng sử dụng này trong modelbuilder, nhưng nó cảnh báo tôi rằng hệ thống phân cấp là không hợp lệ:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().Map(p => { p.ToTable("Users"); });
modelBuilder.Entity<UserViewModel>().Map(p => { p.ToTable("Users"); });
}
Cũng nên nhớ rằng tôi không cố gắng để đạt được "Bảng tách". Tôi không muốn bảng của tôi được chia thành hai thực thể, tôi muốn có tất cả các cột không có giá trị, ngoại trừ một cột có khóa chính và cho phép các ứng dụng/dịch vụ web/cổng web khác nhau điền nhiều dữ liệu như chúng đã được cấp truy cập cho.
Cảm ơn tất cả các mẹo :)
Hãy nhìn vào mô hình kho chung. Tất cả bạn cần là một kho lưu trữ cơ sở duy nhất cho tất cả các thực thể của bạn. Tôi cảm thấy đau đớn của bạn, tôi đã sử dụng một kho lưu trữ cho mọi thực thể cho đến khi tôi phát hiện ra mẫu kho lưu trữ chung. – JBeckton