实体框架 - 将导航属性设置为null但仍无法保存实体

时间:2016-06-17 21:29:14

标签: c# .net entity-framework ef-code-first

更新:现在使用InverseProperty但错误没有改变。我遵循了这个教程:

http://www.entityframeworktutorial.net/code-first/inverseproperty-dataannotations-attribute-in-code-first.aspx

使用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将被忽略,并尝试为每个属性插入一个。

0 个答案:

没有答案