6

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

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

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

当我尝试创建 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”没有可设置的属性。在 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 type, Object resource) at System.Data.Services.Client.DataServiceContext.CreateRequestData(ResourceBox box, Boolean newline) at System.Data.Services.Client.DataServiceContext.SaveAsyncResult.CreateChangeData(Int32 index , 布尔换行符) 在 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;
        }
    }   
}    
4

1 回答 1

2

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

于 2010-02-12T23:51:08.187 回答