在 ADO.NET 数据服务客户端上下文中公开实体框架实体字段的枚举类型属性
我有一个实体,其字段类型为 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(类型类型,字符串类型名称,布尔值skipSettableCheck) 在System.Data.Services.Client.ClientType.Create(类型类型,布尔expectModelType) 在 System.Data.Services.Client.DataServiceContext.WriteContentProperties(XmlWriter writer、ClientType 类型、对象资源) 在 System.Data.Services.Client.DataServiceContext.CreateRequestData(ResourceBox 框,布尔换行符) 在 System.Data.Services.Client.DataServiceContext.SaveAsyncResult.CreateChangeData(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;
}
}
}
I have an entity with fields that are typed int
and i want to exposed those fields as properties which get and recieve enum type values for working strongly typed.
so i've created a new partial class for the entity and added the two properties.
when i try to create a new instance of the TestEntity and add it to the context ,
and call save changes i get the following exception:
An error occurred while processing this request.
at System.Data.Services.Client.DataServiceContext.SaveAsyncResult.HandleBatchResponse()
at System.Data.Services.Client.DataServiceContext.SaveAsyncResult.EndRequest()
at System.Data.Services.Client.DataServiceContext.SaveChanges(SaveChangesOptions options)
at System.Data.Services.Client.DataServiceContext.SaveChanges()
the inner exception is:
System.InvalidOperationException: The type 'enum1' has no settable properties.
at System.Data.Services.Client.ClientType..ctor(Type type, String typeName, Boolean skipSettableCheck)
at System.Data.Services.Client.ClientType.Create(Type type, Boolean expectModelType)
at 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, Boolean newline)
at System.Data.Services.Client.DataServiceContext.SaveAsyncResult.BeginNextChange(Boolean replaceOnUpdate)
so i figured it tries to reflect the enum properties as classes properties.
how can i make the context ignore those properties when it tries to reflect on them.
i am using VS 2008 team suite sp1 , SQL Server 2008 , .Net 3.5 Sp1.
Help.
the partial class code:
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;
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不认为你可以。 在 ADO.Net 数据服务中,您不能在发送到服务器的代理对象上使用枚举。 尝试更改您的对象以使用 int (或短整型)代替。
I don't think that you can. In ADO.Net Data Services, you can't have enums on your proxy objects that get sent up to the server. Try changing your object around to use an int (or short) instead.