我有一个示例代码:
public class Tag
{
public int TagId { get; set; }
public virtual ICollection<User> Users { get; set; }
}
public class User
{
public int UserId { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
}
当我在我的模型上运行 EF 时(我使用代码优先方法),我会在我的数据库中自动创建一些表:
Users
Tags
UserTagUsers <-- junction table for many-to-many relationship
没关系,直到我决定向 User 实体再添加一个属性:
public class User
{
public int UserId { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
public virtual ICollection<Tag> Tags2 { get; set; }
}
在这种情况下,EF 生成完全不同的关系,它删除了 UserTagUsers 联结表,但向 Tags 表添加了一些额外的属性,以便使其一对一映射。
如何明确告诉 EF 使属性 Tags 和 Tags2 成为多对多?