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

时间:2009-06-15 11:24:03

标签: entity-framework wcf-data-services .net-3.5

我有一个实体,其字段为intd

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

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

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

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

内部例外是:

System.InvalidOperationException:类型“enum1”没有可设置的属性。    at System.Data.Services.Client.ClientType..ctor(Type type,String typeName,Boolean skipSettableCheck)    在System.Data.Services.Client.ClientType.Create(Type type,Boolean expectModelType)    在System.Data.Services.Client.DataServiceContext.WriteContentProperties(XmlWriter writer,ClientType类型,对象资源)    在System.Data.Services.Client.DataServiceContext.CreateRequestData(ResourceBox框,布尔换行符)    at System.Data.Services.Client.DataServiceContext.SaveAsyncResult.CreateChangeData(Int32 index,Boolean newline)    在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;
        }
    }   
}    

1 个答案:

答案 0 :(得分:2)

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