0

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

    ....

公共类用户数据库 {

    [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);

该项目一直说此错误消息:SetUp: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();}

有什么帮助吗?谢谢

4

1 回答 1

0

初始化您的收藏

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