1

我有一个文件 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 的行为是这样的:在所有每个实体或整个模型的第一次数据库访问中创建?

4

2 回答 2

0

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

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

于 2013-01-24T23:17:22.650 回答
0

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

public enum UnitType : int
{
    Folder = 0,
    Teststeps = 1
}
于 2013-01-25T03:47:04.717 回答