请考虑以下内容:
public class BaseEntity
{
public Guid CreatedBy { get; set; }
public DateTimeOffset CreatedOn { get; set; }
public Guid ModifiedBy { get; set; }
public DateTimeOffset ModifiedOn { get; set; }
}
public class User : BaseEntity
{
public Guid UserId { get; set; }
public string Email { get; set; }
public ICollection<Company> Companies { get; set; }
}
public class Company : BaseEntity
{
public Guid CompanyId { get; set; }
public string Name { get; set; }
[ForeignKey("UserId")]
public User User { get; set; }
}
创建了第一个迁移并查看了SQL中的表后,我意识到User
导航属性(以及所有具有相同FK的模型)是多余的,因为它始终等于ID的ID。 CreatedBy
属性。
我试图基于this answer建立User
和BaseEntity
之间的关系(也从User
模型中删除了Company
FK),但没有成功。< / p>
错误:
无法确定导航所代表的关系 类型“用户”的属性“ Company.CreatedBy”。手动配置 关系,或使用“ [NotMapped]”忽略此属性 属性,或使用“ OnModelCreating”中的“ EntityTypeBuilder.Ignore”。
模型:
public class BaseEntity
{
public Guid CreatedById { get; set; }
public DateTimeOffset CreatedOn { get; set; }
public Guid ModifiedById { get; set; }
public DateTimeOffset ModifiedOn { get; set; }
[ForeignKey("CreatedById")]
public User CreatedBy { get; set; }
[ForeignKey("ModifiedById")]
public User ModifiedBy { get; set; }
}
public class User : BaseEntity
{
public Guid UserId { get; set; }
public string Email { get; set; }
public ICollection<Company> Companies { get; set; }
}
public class Company : BaseEntity
{
public Guid CompanyId { get; set; }
public string Name { get; set; }
}
我有正确的方法来实现它吗?
选项B用于维护原始模型,而不使用CreatedBy
/ ModifiedBy
属性上的导航,并在必要时查询用户。