双外键:C#中的多重性错误

时间:2015-04-02 14:13:08

标签: c# key multiplicity

我有一套实体框架的拍卖。 每次拍卖都有一个用户数据库对象的2个外键。 [创作者(必填)和当前获胜者(可选)]

    ....

公共类UserDB     {

    [Key]
    public int Id { get; set; }
    public virtual ICollection<AuctionDB> WinnerOfAucts { get; set; }
    public virtual ICollection<AuctionDB> SellerOfAucts { get; set; }

...     }     公共类AuctionDB     {

    [Key]
    public int Id { get; set; }
    public virtual UserDB WinnerUser { get; set; }
    public virtual int WinnerUserId { get; set; }
    public virtual int SellerId { get; set; }  
    public virtual UserDB Seller { get; set; }

...     }

有外键的代码:

modelBuilder.Entity<AuctionDB>().HasRequired(a => a.Seller).WithMany(u => u.SellerOfAucts).HasForeignKey(a => a.SellerId).WillCascadeOnDelete(true);
            modelBuilder.Entity<AuctionDB>().HasOptional(a => a.WinnerUser).WithMany(u => u.WinnerOfAucts).HasForeignKey(a => a.WinnerUserId).WillCascadeOnDelete(false);

项目一直说这个错误信息: 建立: System.Data.Entity.ModelCongifuration.ModelValidationException:在模型生成期间检测到一个或多个验证错误:

AuctionSite.AuctionDB_WinnerUser :: Multitplicity与Role&#39; AuctionDB_WinnerUser_Target&#39; AuctionDB_WinnerUser_Target&#39;中的参照约束冲突。 in relationship&#39; AuctionDB_WinnerUser&#39;。 由于从属角色中的所有属性都是不可为空的,因此主要角色的多样性必须为“&#39; 1”。

问题在于db.Database.Delete()方法:

            if (connectionString == null) throw new ArgumentNullException();
        using (var db = new AuctionContext(connectionString))
        {
            try
            {
                db.Database.Delete();
                db.Database.Create();
            }
            catch (SqlException)
            {
            throw new UnavailableDbException();}

有任何帮助吗?谢谢

1 个答案:

答案 0 :(得分:0)

初始化您的收藏

public UserDB()
{
WinnerOfAucts = new List<AuctionDB>();
SellerOfAucts = new List<AuctionDB>();
}