更新:现在使用InverseProperty但错误没有改变。我遵循了这个教程:
使用Code First和 not 使用延迟加载。我正在尝试保存以下实体:
public class BlackList {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int BlackListID { get; set; }
[Required]
public string OffenderUserID { get; set; }
[Required]
public string SellerUserID { get; set; }
[Required]
public DateTime OffenseDate { get; set; }
[ForeignKey("OffenderUserID")]
public ApplicationUser OffenderUser { get; set; }
[ForeignKey("SellerUserID")]
public ApplicationUser SellerUser { get; set; }
public BlackList() {
OffenderUser = new ApplicationUser();
SellerUser = new ApplicationUser();
}
}
...与ApplicationUser(Identity Framework)相关:
public class ApplicationUser : IdentityUser {
[InverseProperty("OffenderUser")]
public List<BlackList> OffenderBlackLists { get; set; }
[InverseProperty("SellerUser")]
public List<BlackList> SellerBlackLists { get; set; }
public ApplicationUser() {
OffenderBlackLists = new List<BlackList>();
SellerBlackLists = new List<BlackList>();
}
}
......就像这样:
var blacklist = new BlackList {
OffenderUserID = offenderUserID,
SellerUserID = sellerUserID,
OffenseDate = DateTime.Now,
OffenderUser = null,
SellerUser = null
};
db.Blacklists.Add(blacklist);
db.SaveChanges();
...我仍然收到此错误:
UserName字段是必需的。
UserName在IdentityUser中 - 它不是在BlackList中生成的 - 该表看起来与上面的POCO实体完全相同。
这似乎暗示将两个* User导航属性设置为null将被忽略,并尝试为每个属性插入一个。