我很想了解如何使用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不想允许这样做。当执行带有许多includes的Linq查询时,Index()方法会出现以下错误。
“引入FOREIGN KEY约束'FK_dbo.Quotes_dbo.BusinessUnits_BusinessUnitId'到表'Quotes'上可能导致循环或多个级联路径。指定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
类的代码吗? - Jeremy Todd