0

オークションのエンティティ フレームワーク セットがあります。すべてのオークションには、User DB オブジェクトへの 2 つの外部キーがあります。[作成者 (必須) と現在の勝者 (任意)]

    ....

パブリック クラス ユーザーDB {

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

... } public class 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);

プロジェクトは次のエラー メッセージを言い続けます: SetUp: System.Data.Entity.ModelCongifuration.ModelValidationException : モデルの生成中に 1 つ以上の検証エラーが検出されました:

AuctionSite.AuctionDB_WinnerUser: : 多重度が、関係 'AuctionDB_WinnerUser' のロール 'AuctionDB_WinnerUser_Target' の参照制約と競合しています。従属ロールのすべてのプロパティは null 非許容であるため、プリンシパル ロールの多重度は '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();}

何か助けはありますか?ありがとうございました

4

1 に答える 1

0

コレクションを初期化する

public UserDB()
{
WinnerOfAucts = new List<AuctionDB>();
SellerOfAucts = new List<AuctionDB>();
}
于 2015-05-21T06:59:35.237 に答える