使用Entity Framework Core防止一对一映射

时间:2017-04-15 16:24:37

标签: c# asp.net entity-framework entity-framework-core

我正在ASP.NET Core应用程序中重构一些EF Core代码,并且努力将一些特定于应用程序的代码与一些Framework代码(Identity)分离,我想手动管理一个关系让EF Core创建一对一的映射。

我想基本上从一个类到另一个类的引用,这是一对一的映射,但要使EF Core不会尝试自动建立这种关系。

所以我有:

  public class ApplicationUser : IdentityUser
  {
     public Author Author { get; set; }
  }

public class Author
{
    public long Id { get; set; }
    public string ApplicationUserId { get; set; }
    public ApplicationUser ApplicationUser { get; set; }
    [Required]
    public string FirstName { get; set; }
    [Required]
    public string LastName { get; set; }
    public string Biography { get; set; }
    public virtual ICollection<BlogPost> BlogPosts { get; set; }
  }

然后在我的背景下,这两个都变成了桌子。 ApplicationUser类用于Identity,另一个表更具特定于应用程序。

有没有办法让EF Core告诉它不要在这些类之间创建一对一的映射?

由于

1 个答案:

答案 0 :(得分:0)

您可以在Ignore()的覆盖方法modelBuilder内使用OnModelCreating()上的DbContext功能,如下所示:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<ApplicationUser >().Ignore(u => u.Author);
        modelBuilder.Entity<Author>().Ignore(a => a.ApplicationUser);

        //rest of the code 
   }