实体框架核心一对多双向

时间:2017-06-09 10:06:34

标签: asp.net-core one-to-many entity-framework-core ef-fluent-api

来自强大的nHibernate的世界试图获得双向关系,以便在Entity Framework Core中工作。

以下是我的简化实体:

public class User
{
    public int id { get; set; }
    public string username { get; set; }
    public ICollection<Login> Logins { get; set; }
}

public class Login
{
    public int id { get; set; }
    public string email { get; set; }
    public User User { get; set; }
}

这是我的映射:

    public DbSet<User> Users { get; set; }
    public DbSet<Login> Logins { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>()
            .ToTable("users")
            .HasMany(x=>x.Logins)
            .WithOne(x=>x.User)
            .HasForeignKey(x=>x.user_id);

        modelBuilder.Entity<Login>()
            .ToTable("logins")
            .HasOne(d=>d.User)
            .WithMany(d=>d.Logins)
            .HasForeignKey(e => e.user_id);
    }

当我查询用户时,会正确获取登录集合。但是,当我查询登录时,用户会显示为空。

 var login = DBContext.Logins.Where(x => x.email == email).SingleOrDefault();
 // login.User is null 

0 个答案:

没有答案