EF7 Code First - 生成迁移时 属性 不能存在于实体类型 'object' 上

EF7 Code First - Property cannot exist on entity type 'object' when generating migration

问题

当尝试通过从命令行执行来创建我的 EF7 Code First 数据库的初始迁移时:

dnx ef migrations add Initial

我收到错误:

System.InvalidOperationException: 属性 'ExerciseTemplateId' 不能存在于实体类型 'object' 上,因为 属性 没有被标记为影子状态并且没有相应的 CLR 属性 存在于基础类型上。 Full Stacktrace

有什么想法吗?

导致错误的模型

出于某种原因,EF7 似乎不喜欢我模型上的主键 属性 ExerciseTemplateId

public class ExerciseTemplate
{
    public int ExerciseTemplateId { get; set; }
    public string InitalCode { get; set; }
    public string ClassName { get; set; }
    public string MainMethodName { get; set; }

    public int ExerciseForeignKey { get; set; }
    public Exercise Exercise { get; set; }
}

更多详情

ExerciseTemplate 模型唯一有趣的部分是与 Exercise 模型的一对一关系:

public class Exercise
{
    public int ExerciseId { get; set; }
    public string Name { get; set; }
    public string Guidance { get; set; }
    public ExerciseTemplate Template { get; set; }
    public List<ExerciseCategory> Categories { get; set; }
    public List<Test> Tests { get; set; }
}

这个问题已经很长了所以我的DBContext在这个DBContext Gist

更新

所有模型和数据库上下文都可以在这里找到Models and Context Gist

长话短说:不要使用 objectType 作为 属性 输入您的模型 类。它在数据库中没有表示。

如果您绝对需要存储任意对象,您可以使用一些序列化程序并将序列化的对象作为 BLOB 存储在数据库中。