11

Tôi đang cố gắng tạo mối quan hệ một đến một bằng cách sử dụng C# trong Entity Framework 6 sử dụng ASP.NET MVC 5 với xác thực người dùng được tích hợp sẵn.Làm cách nào để ánh xạ bảng bằng API thông thạo trong ASP.NET MVC 5, Entity Framework 6?

Tôi có thể tạo bảng và kết nối với các giá trị mặc định mà Entity Framework tạo. Nhưng khi tôi cố gắng sử dụng API thông thạo .... cụ thể hơn khi tôi sử dụng trên mô hình tạo ra thậm chí làm trống di chuyển cơ sở dữ liệu của tôi bằng cách sử dụng giao diện điều khiển quản lý gói sẽ không thành công. Làm thế nào tôi có thể lập bản đồ mối quan hệ một của tôi?

lỗi của tôi:

//error 
//my.Models.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined. //Define the key for this EntityType. 
//my.Models.IdentityUserRole: : EntityType 'IdentityUserRole' has no key defined. //Define the key for this EntityType. 
//IdentityUserLogins: EntityType: EntitySet 'IdentityUserLogins' is based on type //'IdentityUserLogin' that has no keys defined. 
//IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles' is based on type //'IdentityUserRole' that has no keys defined. 

Mã của tôi:

namespace my.Models 
{ 

    public class ApplicationUser : IdentityUser 
    { 
    } 

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
    { 
     public ApplicationDbContext() 
      : base("DefaultConnection") 
     { 
     } 

     public DbSet<EngineeringProject> EngineeringProjects { get; set; } 

     public DbSet<EngineeringProject> EngineeringDesigns { get; set; } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Configurations.Add(new EngineeringDesignMap()); 
      modelBuilder.Configurations.Add(new EngineeringProjectMap()); 
     } 

    } 
} 

namespace my.Models.Mapping 
{ 
    public class EngineeringProjectMap : EntityTypeConfiguration<EngineeringProject> 
    { 
     public EngineeringProjectMap() 
     { 
      this.HasRequired(t => t.EngineeringPd) 
       .WithOptional(t => t.EngineeringProject); 
      this.HasRequired(t => t.EngineeringProjectCategory) 
       .WithMany(t => t.EngineeringProjects) 
       .HasForeignKey(d => d.CategoryId); 
     } 
    } 
} 
+0

_không có khóa được xác định_ Điều gì không rõ ràng với bạn? 'IdentityUser' trông như thế nào? –

Trả lời

18

Các lỗi xảy ra do các bảng nhận dạng có nguồn gốc có ánh xạ trong ngữ cảnh bắt nguồn. Điều này cần được gọi bên trong hàm ghi đè OnModelCreating mới. Để làm điều này, chỉ cần thêm base.OnModelCreating (modelBuilder) vào phương thức của bạn như được thấy bên dưới.

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); // <-- This is the important part! 
    modelBuilder.Configurations.Add(new EngineeringDesignMap()); 
    modelBuilder.Configurations.Add(new EngineeringProjectMap()); 
} 
+1

Điều này làm cho giải pháp rõ ràng đối với tôi. Cảm ơn! –

7

Dường như bạn đang thiếu một cuộc gọi đến base.OnModelCreating trong DbContext của bạn.

Các vấn đề liên quan