2015-04-02 56 views
0

我有一個實體框架集拍賣。 每個拍賣都有一個2用戶DB對象的外鍵。 [創建者(必需)和當前的優勝者(可選)]雙重外鍵:C#中的多重性錯誤

.... 

公共類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::多重性與'AuctionDB_WinnerUser'關係中角色'AuctionDB_WinnerUser_Target'中的參照約束衝突。 由於從屬角色中的所有屬性都是不可空的,所以主體角色的多重性必須爲'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();} 

任何幫助嗎?謝謝

回答

0

初始化您的收藏

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