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

时间:2013-01-24 21:43:08

标签: c# entity-framework exception-handling enums

我有一个文件Unit.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:在所有每个实体的第一个数据库访问中,或者创建整个模型?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

尝试使用以下内容,也许enum只需要从原语派生出来?

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