Enums Telerik OpenAccess:Can a";“可为空”;是否映射枚举类型属性?

Enums Telerik OpenAccess:Can a";“可为空”;是否映射枚举类型属性?,enums,nullable,openaccess,Enums,Nullable,Openaccess,我是OpenAccess的初学者。我正在根据“Linq到Sql”的经验编写一些测试代码 我尝试将allownull int字段映射到“NullAble”枚举类型属性,但失败了 在VS.Net的可视化设计器中,如果我将域类中的属性的“Nullable”属性设置为“true”,将“Type”属性设置为“MyEnum”(“MyEnum”是我定义的枚举),则编译项目时将返回以下错误 “MyClass”presistent类中名为“MyEnum”的成员的类型不是其列的有效映射 如果我将域类中的属性“Nul

我是OpenAccess的初学者。我正在根据“Linq到Sql”的经验编写一些测试代码

我尝试将allownull int字段映射到“NullAble”枚举类型属性,但失败了

在VS.Net的可视化设计器中,如果我将域类中的属性的“Nullable”属性设置为“true”,将“Type”属性设置为“MyEnum”(“MyEnum”是我定义的枚举),则编译项目时将返回以下错误

“MyClass”presistent类中名为“MyEnum”的成员的类型不是其列的有效映射

如果我将域类中的属性“Nullable”属性设置为“false”,将“Type”属性设置为“MyEnum?”,则编译过程将失败,但在运行时从数据库获取数据时将返回以下错误

类型转换器初始化失败。名为“IntConverter”的转换器未从CLR类型“System.null”转换为SQL类型“int”

但在“linqtosql”中,“NullAble”枚举类型属性可以映射到一个类中,并且可以正常工作


提前感谢您的帮助

不幸的是,目前似乎不支持可空枚举,但这个问题已经得到解决,您可以在Telerik OpenAccess ORM的未来版本中找到它的更新

作为一种解决方法,您可以在域类的部分类中创建包装器属性,以便正确获取和设置枚举

您可以通过以下步骤实现这一点: 1) 将域类属性的类型更改为“int”,将其可空设置设置设置为“true”,将其访问修饰符设置为“private”。 2) 创建包含可空枚举的实体的分部类。 3) 添加包装器属性并实现其getter和setter,如下所示:

public MyEnum? MyEnumWrapper
{
    get
    {
        if (this.MyEnum.HasValue)
        {
            return (MyEnum)this.MyEnum.Value;
        }

        return null;
    }
    set
    {
        this.MyEnum = (int?)value;
    }
}
关于您正在获得的-它是其中的一部分,旨在警告您模型中可能存在的不一致性,但这并不意味着您的项目是不可构建的,而且它还将通过实现可为null的枚举支持得到修复