gpt4 book ai didi

c# - 删除一对多关系中的相关实体

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:49 24 4
gpt4 key购买 nike

我有这个域名:

public class Phone {
public int Id { get; set; }
public string Number { get; set; }
public Person Person { get; set; }
}
public class Person {
public int Id { get; set; }
public IList<Phone> Phones { get; set; }
}

我加载了一个 Person 并清除了它的 Phones。但是操作导致错误:

// actually loads person from repository...
var person = _personRepository.Include(p => p.Phones).Where(p => p.Id == 1).First();
person.Phones.Clear();
_personRepository.Update(person);

在上面您可以看到加载Person 和清除其Phones 的简单逻辑。但是出现这个错误:

The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted.

实际上我想清除所有 Person.Phones 并添加一些新项目。但是我想在一个查询中清除它们,而不是一个一个地删除它们。

你有什么想法吗?你能帮我吗?提前致谢。

最佳答案

您不能在 EF 中生成基于集合的 SQL。因此,在给定 Person.Id 的情况下,EF 无法生成删除所有 Phone 记录的单个 SQL 语句。

您可以自己编写 SQL 并将其传递给 ObjectContext.ExecuteStoreCommandDbContext.Database.ExecuteSqlCommand取决于您的型号。

关于c# - 删除一对多关系中的相关实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10564452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com