我有一个User和一个Organization类。他们看起来像这样
public class User
{
public int UserId { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<Organization> Organizations { get; set; }
}
public class Organization : EntityBase
{
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<User> Users { get; set; }
}
两者都从EntityBase类继承,以获取Id和创建/更新跟踪等常用字段。
public abstract class EntityBase
{
public int Id { get; set; }
public DateTime Created { get; set; }
public virtual User CreatedBy { get; set; }
public DateTime Updated { get; set; }
public virtual User UpdatedBy { get; set; }
}
由两者上的ICollection属性表示,应该存在多对多关系。但是,当我的数据库自动生成时,我会在表格中添加不正确的外键
如果我将CreatedBy和UpdatedBy更改为字符串而不是用户属性,我会得到一个连接表,这就是我想要的。
这是实体框架的问题,只是混淆了,我需要在使用流畅的映射中提供多对多配置,或者我做错了什么?
答案 0 :(得分:1)
如果您有多个关系,则需要通过流畅的API或使用属性手动配置它们,
注意:如果相同类型之间有多个关系(for 例如,假设您定义了Person和Book类,其中 Person类包含CommentsBooks和AuthoredBooks导航 属性和Book类包含作者和审阅者 导航属性)您需要手动配置 使用数据注释或流畅的API
的关系