如何创建双外键Entity Framework CF
How to create double foreign key Entity Framework CF
我正在使用 ASP.NET MVC 和 Entity Framework(代码优先)。
我有默认创建的所有实体 table,我想创建一个 Review
table
public Guid Id { get; set; }
public ApplicationUser User { get; set; }
[MaxLength(125)]
[ForeignKey("User"),Column(Order = 0)]
public string ReviewerId { get; set; }
public DateTime Date{ get; set; }
[Required]
[MaxLength(125)]
public string Title{ get; set; }
public string Comment{ get; set; }
[ForeignKey("User"), Column(Order = 1)]
[MaxLength(125)]
public string ReviewedId { get; set; } // who we are reviewing
然而,当我尝试使用添加迁移添加此 table 时,出现此错误:
The number of properties in the dependent and principal roles in a relationship constraint must be identical.
如何解决这个问题?我的想法是,我希望能够通过 ReviewedId 或 ReviewerId 搜索评论。
问题是您有一个导航 属性 到用户 table:
public ApplicationUser User { get; set; }
但是有两个外键属性声称是这个导航的外键属性:
[ForeignKey("User"),Column(Order = 0)]
public string ReviewerId { get; set; }
[ForeignKey("User"), Column(Order = 1)]
public string ReviewedId { get; set; }
这才是真正的错误。 EF 在外键定义和引用的主键中发现了不一致的属性数量,因此没有解决实际问题。
解决方法是为 ApplicationUser
定义两个导航属性,例如:
[ForeignKey("Reviewer")]
public string ReviewerId { get; set; }
public ApplicationUser Reviewer{ get; set; }
[ForeignKey("ReviewedUser")]
public string ReviewedId { get; set; }
public ApplicationUser ReviewedUser{ get; set; }
我正在使用 ASP.NET MVC 和 Entity Framework(代码优先)。
我有默认创建的所有实体 table,我想创建一个 Review
table
public Guid Id { get; set; }
public ApplicationUser User { get; set; }
[MaxLength(125)]
[ForeignKey("User"),Column(Order = 0)]
public string ReviewerId { get; set; }
public DateTime Date{ get; set; }
[Required]
[MaxLength(125)]
public string Title{ get; set; }
public string Comment{ get; set; }
[ForeignKey("User"), Column(Order = 1)]
[MaxLength(125)]
public string ReviewedId { get; set; } // who we are reviewing
然而,当我尝试使用添加迁移添加此 table 时,出现此错误:
The number of properties in the dependent and principal roles in a relationship constraint must be identical.
如何解决这个问题?我的想法是,我希望能够通过 ReviewedId 或 ReviewerId 搜索评论。
问题是您有一个导航 属性 到用户 table:
public ApplicationUser User { get; set; }
但是有两个外键属性声称是这个导航的外键属性:
[ForeignKey("User"),Column(Order = 0)]
public string ReviewerId { get; set; }
[ForeignKey("User"), Column(Order = 1)]
public string ReviewedId { get; set; }
这才是真正的错误。 EF 在外键定义和引用的主键中发现了不一致的属性数量,因此没有解决实际问题。
解决方法是为 ApplicationUser
定义两个导航属性,例如:
[ForeignKey("Reviewer")]
public string ReviewerId { get; set; }
public ApplicationUser Reviewer{ get; set; }
[ForeignKey("ReviewedUser")]
public string ReviewedId { get; set; }
public ApplicationUser ReviewedUser{ get; set; }