我有一套实体框架的拍卖。 每次拍卖都有一个用户数据库对象的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();}
有任何帮助吗?谢谢
答案 0 :(得分:0)
初始化您的收藏
public UserDB()
{
WinnerOfAucts = new List<AuctionDB>();
SellerOfAucts = new List<AuctionDB>();
}