在ADO.NET数据服务客户端上下文中为实体框架实体字段公开枚举类型属性

6 entity-framework .net-3.5 wcf-data-services

我有一个实体,其字段为int类型

我希望将这些字段公开为获取和接收枚举类型值以进行强类型操作的属性.

所以我为实体创建了一个新的分部类,并添加了两个属性.

当我尝试创建TestEntity的新实例并将其添加到上下文,并调用保存更改时,我得到以下异常:

处理此请求时发生错误.在System.Data.Services.Client.DataServiceContext.SaveAsyncResult.HandleBatchResponse()在System.Data.Services.Client.DataServiceContext.SaveAsyncResult.EndRequest()在System.Data.Services.Client.DataServiceContext.SaveChanges(SaveChangesOptions选项)在系统.Data.Services.Client.DataServiceContext.SaveChanges()

内在的例外是:

System.InvalidOperationException:类型'enum1'没有可设置的属性.在System.Data.Services.Client.ClientType..ctor(类型type,字符串的typeName,布尔skipSettableCheck)在System.Data.Services.Client.ClientType.Create(类型类型,布尔expectModelType)在System.Data.Services.Client在System.Data.Services.Client.DataServiceContext.CreateRequestData(ResourceBox框,布尔换行)在System.Data.Services.Client.DataServiceContext.SaveAsyncResult.CreateChangeData .DataServiceContext.WriteContentProperties(XmlWriter的作家,ClientType类型,对象资源)(的Int32索引System.Data.Services.Client.DataServiceContext.SaveAsyncResult.BeginNextChange(Boolean replaceOnUpdate)中的布尔换行符

所以我想它试图将枚举属性反映为类属性.如何在上下文中尝试反映它们时忽略这些属性.

我正在使用VS 2008团队套件sp1,SQL Server 2008,.Net 3.5 Sp1.

救命.

部分类代码:

public partial class TestEntity
{     
    public enum1 Field1
    {
        get
        {
            return (enum1)field1;
        }
        set
        {
            field1 = (Int16)value;
        }
    }

    public enum2 Field2
    {
        get
        {
            return (enum2)field2;
        }
        set
        {
            field2 = (Int16)value;
        }
    }   
}    
Run Code Online (Sandbox Code Playgroud)

Pet*_*ert 2

我不认为你可以。在 ADO.Net 数据服务中,您不能在发送到服务器的代理对象上使用枚举。尝试更改您的对象以使用 int (或短整型)代替。