我在我的项目中遇到了这个错误。现在卡了一个月了。问题是,我正在对现有项目进行增强,而域层非常复杂,有 50 多个表,所以我无法查明根本原因。
有趣的是,如果所有域类所在的项目都在主解决方案中,则会发生错误。但是当我将项目复制出来并构建它时,将 dll 复制到 Web 应用程序 bin 文件夹中,它可以正常工作。完全相同的代码。其他团队成员也不会遇到此错误。
另外,当我在我们开发之前从 TFS 获取原始源代码时,也会发生同样的错误。至少在开始的两周内,我们已经能够毫无错误地进行开发。那么SQL DB是否可能导致错误?
所以我想知道这是否是一个EF错误。任何指针可以帮助我调试或找出罪魁祸首域类?
这是错误截图。
http://imageshack.us/photo/my-images/10/8a1w.jpg/
--UPDATE-- 启动 Web 应用程序时,context.Database.Initialize 上出现错误。
设法找到导致问题的实体。一个。这是TPT + TPH b。2 个具有相同外键属性名称的表,在下面的示例中,它是 WorkerBenefit 属性。
此处已报道:http: //entityframework.codeplex.com/workitem/677。并且它声明版本:6.0.0,意味着我必须使用 EF6?
[Table("Person")]
public abstract class Person
{
public int Id { get; set; }
public string PersonNumber { get; set; }
}
[Table("FullTimeWorker")]
public class FullTimeWorker : Person
{
public string FullTimeWorkerProperty { get; set; }
[ForeignKey("WorkerBenefit")]
public int WorkerBenefitId { get; set; }
[ForeignKey("WorkerBenefitId")]
public virtual WorkerBenefit WorkerBenefit { get; set; }
}
[Table("PartTimeWorker")]
public class PartTimeWorker : Person
{
public string PartTimeWorkerProperty { get; set; }
[ForeignKey("WorkerBenefit")]
public int WorkerBenefitId { get; set; }
[ForeignKey("WorkerBenefitId")]
public virtual WorkerBenefit WorkerBenefit { get; set; }
}
public class MorningShiftWorker : PartTimeWorker
{
public string MorningShiftWorkerProperty { get; set; }
}
public class EveningShiftWorker : PartTimeWorker
{
public string EveningShiftWorkerProperty { get; set; }
}