【发布时间】:2021-10-14 02:05:42
【问题描述】:
我有一个代表公司的类,该公司有一个公司用户列表。我可以毫无问题地将用户添加到公司,甚至可以从公司中删除用户。但是,问题是当我删除用户时,他们的记录仍保留在数据库中,但使用 null 而不是外键。
这是公司类
public class Company : BaseModel
{
public string Name { get; set; }
public string UniqueId { get; set; }
public virtual List<Location> CompanyLocations { get; set; }
public virtual List<CompanyUser> CompanyUsers { get; set; }
}
以及公司用户
public class CompanyUser : BaseModel
{
public string UserId { get; set; }
public virtual Company Company { get; set; }
}
这是一个问题的例子。
如您所见,CompanyId 字段中有几行为空。我希望删除整行,而不仅仅是删除关系。
我想我可以在OnModelCreate 中添加一些东西来修复这种关系,但我不知道那是什么。
感谢任何帮助。
【问题讨论】:
-
您正在寻找带有
cascading delete的外键。您的原始迁移应指定在删除时执行何种操作,并且现在很可能设置为无操作。您可以重新进行迁移,也可以使用OnModelCreate中的 EFCore Fluent Api,如您所说:builder.Entity<Company>().WithMany(c => c.CompanyUsers).WithOne(cu => cu.Company).OnDelete(CascadeAction.Delete); -
感谢您的回复,我添加了类似的内容,现在可以使用
builder.Entity<CompanyUser>().HasOne(e => e.Company).WithMany(f => f.CompanyUsers).OnDelete(DeleteBehavior.Cascade);。我想我还会添加您的建议,因为我还希望在删除公司时删除它。
标签: c# entity-framework entity-framework-core