【发布时间】:2015-01-19 13:55:13
【问题描述】:
我将 ASP.NET MVC5 与 EF6 一起使用,并使用代码优先方法。
我在模型中有一个属性,我需要告诉 EF6 不是外键:
public class LogEntry
{
public int ID { get; set; }
public int LogDayID { get; set; }
public int LogEntryTypeID { get; set; }
public int DepartmentID { get; set; }
public DateTime Clock { get; set; }
public string Text { get; set; }
public virtual LogDay LogDay { get; set; }
public virtual LogEntryType LogEntryType { get; set; }
public virtual Department Department { get; set; }
}
[NotMapped]
public class Department
{
public int ID { get; set; }
public string Title { get; set; }
}
模型部门有[NotMapped],因为这个模型不应该存储在数据库中。
我认为这足以让 EF6 意识到 LogEntry 中的 DepartmentID 不应该是外键。但它却抛出了一个错误,即“部门”未映射。
编辑:即使我从 LogEntry 中删除 DepartmentID,它仍然会抱怨上述错误。
这是完整的错误信息:
“类型 'SupervisorLogWeb.Models.Department' 未映射。使用 Ignore 方法或 NotMappedAttribute 数据注释检查该类型是否已明确排除。验证该类型是否定义为类,不是原始类型或通用的,并且不继承自 EntityObject。”
【问题讨论】:
-
Department 是 DBContext 的一部分吗?如果是,那这里就不行了。
-
T.Glatzer - 就是这样!我完全忘记将它们从 DbContext 中删除。谢谢。如何将此标记为解决方案?
-
我把它写成答案。
标签: asp.net-mvc entity-framework