为什么我的实体“Person”的以下代码在我的 WCF 数据服务中生成错误:
[System.Data.Services.Common.DataServiceKey("PartitionKey", "RowKey")]
public class Person : TableServiceEntity
{
public string Name { get; set; }
public int Age { get; set; }
... etc
错误:
请求错误
服务器在处理请求时遇到错误。异常消息是“在数据上下文类型“PersonDataServiceContext”上,有一个顶级 IQueryable 属性“Person”,其元素类型不是实体类型。确保 IQueryable 属性是实体类型或在数据上下文类型上指定 IgnoreProperties 属性以忽略此属性。有关更多详细信息,请参阅服务器日志。异常堆栈跟踪是:
在 System.Data.Services.Providers.ReflectionServiceProvider.PopulateMetadata(IDictionary
2 knownTypes, IDictionary
2 childTypes, IDictionary 1.CreateMetadataAndQueryProviders2 entitySets) at System.Data.Services.Providers.BaseServiceProvider.LoadMetadata() at System.Data.Services.DataService
(IDataServiceMetadataProvider& metadataProviderInstance, IDataServiceQueryProvider& queryProviderInstance, BaseServiceProvider& builtInProvider, Object& dataSourceInstance) 在 System.Data.Services.DataService1.CreateProvider() at System.Data.Services.DataService
1.HandleRequest() 在 System.Data.Services.DataService`1.ProcessRequestForMessage(Stream messageBody) 在 SyncInvokeProcessRequestForMessage(Object , Object[] , Object[] ) 在 System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[ ] 在 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) 的输入,Object[]& 输出) ) 在 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
我究竟做错了什么?如果我添加一个名为 PersonID 的属性,错误就消失了,但是我需要通过 PartitionKey 和 RowKey 来访问我的实体,并且类中的 DataServiceKey 装饰没有做任何事情。
我正在使用 Visual Studio 2012、.NET Framework 4.0、Silverlight 5。