public class User : IdentityUser<int>
{
public string FullName { get; set; }
[Required]
public int DepartmentId { get; set; }
public Department Department { get; set; }
[Required]
public int PositionId { get; set; }
public Position Position { get; set; }
}
public class Department
{
public int Id { get; set; }
public string Name { get; set; }
public string? UniqueNumber { get; set; }
}
public class Position
{
public int Id { get; set; }
public string Title { get; set; }
}
现在,如果我删除与用户相关联的部门,该部门也会与用户或职位一起被删除。
这种情况该怎么办?如果职位或部门与用户有关联,则禁止删除,或者建立多对多关系。请告诉我解决这个问题的最佳方法。
此处的连接
много-ко-многим
不适合User-Position
,因为描述的是один
某个用户可以占据много
某个职位,且одной
职位上可以有某个用户的情况много
。可以按照您的初始逻辑即用户可以在部门中工作的方式
User-Department
来实现连接。如果您的用户只能在一个部门工作,那么连接会更合适。много-ко-многим
один
многих
один
одном
один-ко-многим
为了进行更详细的研究,我建议查看这些文章以了解正确的连接配置
один-ко-многим
(以及其他文章):UPD: 如果您想以不删除
Department
的方式实现删除,则需要指定您的用户可以“存在”而无需将其外键更改为类型,即。因此,您将拥有如下用户:User
Department
nullable
int?
Microsoft 文档的这一部分很好地描述了此示例。