我的项目中出现了这个错误。被困了一个月了。 问题是,我正在努力增强现有项目,并且域层非常复杂,有超过50个表,所以我无法确定根本原因。
有趣的是,如果所有域类所在的项目都在主解决方案中,则会发生错误。但是,当我将项目复制并构建它时,将dll复制到Web应用程序bin文件夹,它可以正常工作。完全相同的代码。其他团队成员也不会遇到此错误。
此外,当我从TFS开发之前获得原始源代码时,会发生同样的错误。我们至少在开始的两周内就能够毫无错误地进行开发。那么SQL DB可能导致错误吗?
所以我想知道这是不是EF的错误。是否有任何指针可以帮助我调试或找出罪魁祸首的域类?
这是错误截图。
http://imageshack.us/photo/my-images/10/8a1w.jpg/
- UPDATE-- 启动Web应用程序时,错误发生在context.Database.Initialize上。
管理以查找导致问题的实体。 一个。这是TPT + TPH 湾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; }
}
答案 0 :(得分:0)
也许我可能不完全理解您的代码,而不是:
[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; }
}
不应该是:
[Table("FullTimeWorker")]
public class FullTimeWorker : Person
{
public string FullTimeWorkerProperty { get; set; }
[ForeignKey("WorkerBenefit")]
public int WorkerBenefitId { get; set; }
public virtual WorkerBenefit WorkerBenefit { get; set; }
}
[Table("PartTimeWorker")]
public class PartTimeWorker : Person
{
public string PartTimeWorkerProperty { get; set; }
[ForeignKey("WorkerBenefit")]
public int WorkerBenefitId { get; set; }
public virtual WorkerBenefit WorkerBenefit { get; set; }
}
[Table("WorkerBenefit")]
public class WorkerBenefit : Person
{
public int WorkerBenefitId { get; set; }
public string benefit { get; set; }
}
这可能有所帮助 - 假设问题与我认为的外键有关:How Should I Declare Foreign Key Relationships Using Code First Entity Framework (4.1) in MVC3?
如果没有,这可能是模型与数据库的问题。有一个类似的问题,如果您在主数据库实体中注释掉指向这些表的DbSets,然后逐个取消注释,您将找到它所抱怨的那个。