关于如何正确描述这些关系的一些建议将是一个很好的开始。准确描述的东西是寻找解决方案的问题。我有实体User和Login,其中Login基本上描述了一个用户的登录会话。因此,用户通常有许多登录实例。此关系仅在登录侧描述,具有必需的单用户导航属性,并且在用户端存在隐含但未声明的登录集合。
然后,对于另一个关系,在Login的授权下创建User,因此在User侧描述了这种关系,具有Login导航属性,并且在Login侧有一个隐含但不是User集合
除了使用数据库工具之外,我没有做太多的数据库建模,他们总是只是为我找到合适的关系,但是现在,我必须首先使用流畅的映射来映射这些关系。我如何描述这两种关系,原则和依赖方面是什么,以及这里的多重性是什么?
答案 0 :(得分:0)
Code First试图将可能相同关系的两个方面联系起来。当你有两个不同的单向关系时,你需要通过明确告诉Code First使用不带参数的WithMany()来存在反向导航属性来告诉Code First:
public class User
{
public int Id { get; set; }
public int LoginId { get; set; }
public virtual Login Login { get; set; }
}
public class Login
{
public int Id { get; set; }
public int UserId { get; set; }
public virtual User User { get; set; }
}
public class SomeContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Login> Logins{ get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasRequired(e => e.Login)
.WithMany()
.HasForeignKey(e => e.LoginId);
modelBuilder.Entity<Login>()
.HasRequired(e => e.User)
.WithMany()
.HasForeignKey(e => e.UserId);
}
}