如何删除收藏?

时间:2012-04-02 07:59:04

标签: c# entity-framework

 var main = (from d in db.Discounts where d.Id == discount.Id && d.UserId == userId select d).FirstOrDefault();
main.Address = "new address";
main.TermsStocks.Clear(); // I need clear collection and add new object.

            foreach (var termsStock in terms)
            {
                main.TermsStocks.Add(new TermsStock() { Id = Guid.NewGuid(), MainId = main.Id, Title = termsStock.Title });
            }
db.SaveChanges(); 

我有错误:

  

操作失败。无法更改链接,因为一个或多个   外键值的属性不允许NULL。如果你   更改相应外键设置的连接属性   空值。如果外键值不支持NULL,则必须定义   一个新的关系,外键属性应该设置为另一个   除NULL以外的值,或删除未绑定的对象。

如何删除整个集合并保存一个新集合?

2 个答案:

答案 0 :(得分:1)

您还必须从数据库中删除这些项目,而不仅仅是从nav属性中删除。

大致是:

// main.TermsStocks.Clear(); 
foreach (var item in main.TermsStocks)
{
    db.TermsStocks.Remove(item);
}

答案 1 :(得分:0)

我认为TermsStock对象有一个不可为空的折扣外键。那么就没有一个没有折扣的TermsStock对象。你不想以这种方式做什么。