该属性尚未在实体框架中的类型 XXX 异常上声明
本文关键字:类型 XXX 异常 声明 框架 属性 实体 | 更新日期: 2023-09-27 17:55:43
我有一个文件单位.cs
public class Unit
{
public UnitType UnitTypeState {get;set;}
}
public enum UnitType
{
Folder = 0,
Teststeps = 1,
}
当我将枚举定义放入另一个类(如 UnitDTO)时,我得到了以下异常:
属性"UnitTypeState"不是类型"Unit"上的声明属性。通过使用 Ignore 方法或 NotMappedAttribute 数据批注,验证该属性是否尚未从模型中显式排除。确保它是有效的基元属性。
好吧,这不是真的,呵呵,属性 UnitTypeState 是 Unit 类类中声明的属性。
如何在不将枚举移回 Unit 类的情况下解决此问题?
更新
我仍然对这个错误做了一些研究:
"创建模型时无法使用上下文。"
奇怪的是,我在一个实体上得到这个异常,该实体是具有UnitTyeState属性的实体的父级?!
using (var context = new ITMS.DataAccess.ITMSContext())
{
return context.Templates.ToList();
}
所以似乎创建了模板实体,然后抛出此异常?或者EF的行为如下:在第一次访问所有实体或整个模型时,都会创建数据库?
EF 当前不支持嵌套类型 - 适用于结构类型(即实体和复杂类型)和枚举类型。
添加指向与此问题完全相关的 EF 工作项的链接:http://entityframework.codeplex.com/workitem/119
尝试使用以下方法,也许枚举只需要从原语派生即可工作?
public enum UnitType : int
{
Folder = 0,
Teststeps = 1
}