该属性尚未在实体框架中的类型 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的行为如下:在第一次访问所有实体或整个模型时,都会创建数据库?

该属性尚未在实体框架中的类型 XXX 异常上声明

EF 当前不支持嵌套类型 - 适用于结构类型(即实体和复杂类型)和枚举类型。

添加指向与此问题完全相关的 EF 工作项的链接:http://entityframework.codeplex.com/workitem/119

尝试使用以下方法,也许枚举只需要从原语派生即可工作?

public enum UnitType : int
{
    Folder = 0,
    Teststeps = 1
}