オークションのエンティティ フレームワーク セットがあります。すべてのオークションには、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();}
何か助けはありますか?ありがとうございました