来自强大的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