【发布时间】:2016-02-24 18:49:21
【问题描述】:
我正在尝试构建一个 ASP.net MVC 应用程序。我无法与数据注释建立某种关系。
我有 3 张桌子,Overhours、Accountings、Vacations。每个Overhour 记录可以有1 个Accounting 或Vacation 记录,但它是可选的。所以,它不需要有一个。这是我的Overhour 模型:
public class Overhour
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int OverhourId { get; set; }
....
public int? AccountingId { get; set; }
public virtual Accounting Accounting { get; set; }
public int? VacationId { get; set; }
public virtual Vacation Vacation { get; set; }
}
当我删除我的Overhour 记录(如果有的话)时,我希望同时删除Vacation 和Accounting 记录。当我这样使用它时,级联删除被禁用。
我试过这个:
public class Overhour
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int OverhourId { get; set; }
....
public virtual Accounting Accounting { get; set; }
public virtual Vacation Vacation { get; set; }
}
级联删除有效,但实体框架会创建诸如“Accounting_AccountingId”之类的字段,这也是必需的。这些不应该是必需的。
我尝试的最后一件事是:
public class Overhour
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int OverhourId { get; set; }
....
public int AccountingId { get; set; }
public virtual Accounting Accounting { get; set; }
public int VacationId { get; set; }
public virtual Vacation Vacation { get; set; }
}
但这一次它给了我这样的错误:
在表 xxx 上引入 FOREIGN KEY xxx 约束可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束
我很困惑,我做错了什么?
谢谢
【问题讨论】:
标签: c# asp.net asp.net-mvc entity-framework orm