【发布时间】:2013-05-23 22:40:06
【问题描述】:
我仍在努力使用 EF。我在我的项目中使用了代码优先的方法,偶然发现了以下问题。
我有以下物品:
public class Employee
{
public int EmployeeId { get; set; }
public int BusinessUnitId { get; set; }
public virtual BusinessUnit BusinessUnit { get; set; }
}
public class Quote
{
public int QuoteId { get; set; }
[DisplayName("Business Unit")]
public int BusinessUnitId { get; set; }
[DisplayName("Responsible Employee")]
public int EmployeeId { get; set; }
[DisplayName("Date Issued")]
[DataType(DataType.Date)]
public DateTime DateIssued { get; set; }
[DataType(DataType.MultilineText)]
public string Description { get; set; }
public virtual Employee Employee { get; set; }
public virtual BusinessUnit BusinessUnit { get; set; }
}
两者都包含一个 BusinessUnit 属性,而 EF 似乎不想允许这样做。看到在执行包含一堆包含的 Linq 查询时,我在 Index() 方法上收到以下错误。
引入 FOREIGN KEY 约束 'FK_dbo.Quotes_dbo.BusinessUnits_BusinessUnitId' 在桌子上 “引号”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。无法创建约束。查看以前的错误。
有人可以向我解释为什么我会收到此错误以及如何修复它。谢谢。
编辑:
这肯定是由在 Quote 对象和 Employee 对象中包含 BusinessUnit 属性引起的。我只是不明白为什么。
编辑2:
BusinessUnit 类的代码:
public class BusinessUnit
{
public int BusinessUnitId { get; set; }
public string Name { get; set; }
}
【问题讨论】:
-
你能贴出
BusinessUnit类的代码吗? -
您定义了哪些 DbSet,您覆盖的 OnModelCreate 包含哪些内容?
-
为什么在 Quote 和 Employee 类中包含 int BusinessUnitId?我的猜测是 int 属性和 BusinessUnit 属性之间存在冲突
-
一个员工和一个报价属于一个业务部门。
标签: c# asp.net-mvc entity-framework