【发布时间】:2021-01-21 04:43:44
【问题描述】:
首先使用 Entity Framework Core (5.0.1) 代码我在实现一个有两个对另一个类的引用的类时遇到了麻烦。
这基本上是我想要的结构:
public class Location
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Race
{
public int Id { get; set; }
public string Title { get; set; }
public int? StartLocationId { get; set; }
public Location StartLocation { get; set; }
public int? EndLocationId { get; set; }
public Location EndLocation { get; set; }
}
这实际上工作得很好,但是当我正在实现表单以创建一个新 Race 时,我想添加一些验证属性:
public class Race
{
public int Id { get; set; }
[Required]
public string Title { get; set; }
[Required]
public int? StartLocationId { get; set; }
public Location StartLocation { get; set; }
[Required]
public int? EndLocationId { get; set; }
public Location EndLocation { get; set; }
}
位置引用上的必需属性使得无法在数据库的初始化中创建表(我目前在所有初创公司都在运行,因为我处于开发的开始阶段)。这是我收到的错误消息:
引入 FOREIGN KEY 约束 表 'Races' 上的 'FK_Races_Locations_StartLocationId' 可能会导致循环 或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。无法创建 约束或索引。
据我了解,这与级联删除问题有关。我可以在数据库中禁用级联删除,但我希望在 GUI 中验证所需的属性。这可能吗?
对于我的模型类中的其他非标准关系,我使用 Fluent Api 进行配置,因此使用它的解决方案是最好的。但是,解决问题是我的首要任务,所以使用属性的解决方案也可以。
我在 StackOverflow 上找到了其他主题非常相似的问题,但没有一个建议的解决方案对我有用(有些适用于实体框架,而不是核心):
EF Core Multiple References to Same Entity EF Core 2.2 - Two foreign keys to same table Entity Framework Code First - two Foreign Keys from same table Entity Framework multiple references to same table
【问题讨论】:
标签: database asp.net-core .net-core entity-framework-core