Beh*_*ooz 5 c# entity-framework ef-code-first
我在这里显示了两个模型:
public class Application
{
public string Name { get; set; }
public virtual ICollection<ApplicationTransaction> ApplicationTransactions { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和
public class ApplicationTransaction
{
public long ApplicationId { get; set; }
public virtual Application Application { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我试图删除所有ApplicationTransaction
的Application
与此代码:
var app = _repository.Get<Application>(i => i.Id == 1);
app.ApplicationTransactions.Clear();
Context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
但是当上下文保存更改时,会发生错误:
操作失败:由于一个或多个外键属性不可为空,因此无法更改该关系。对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新的关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。
仅仅清除相关实体的集合是不够的,因为每个相关实体都存储一个指向该Application
实体的外键;因此,您需要删除相关实体,而不是清除相关实体的集合。
foreach (ApplicationTransaction applicationTransaction in app.ApplicationTransactions.ToList())
context.DeleteObject(applicationTransaction);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6128 次 |
最近记录: |