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以外的值,或删除未绑定的对象。
如何删除整个集合并保存一个新集合?
答案 0 :(得分:1)
您还必须从数据库中删除这些项目,而不仅仅是从nav属性中删除。
大致是:
// main.TermsStocks.Clear();
foreach (var item in main.TermsStocks)
{
db.TermsStocks.Remove(item);
}
答案 1 :(得分:0)
我认为TermsStock对象有一个不可为空的折扣外键。那么就没有一个没有折扣的TermsStock对象。你不想以这种方式做什么。