我正在通過OData(WCF數據服務)使用Azure表存儲訪問「Person」實體。我有很多問題需要解決。我是有這個錯誤:通過OData訪問的Azure表存儲實體。 PartitionKey和RowKey作爲主鍵
實體代碼:
public class Person : TableServiceEntity
{
public string Name { get; set; }
... etc
URI: http://127.0.0.1/DataService/PersonDataService.svc/Person
結果:
The server encountered an error processing the request. The exception message is 'On data context type 'PersonDataServiceContext', there is a top IQueryable property 'Person' whose element type is not an entity type. Make sure that the IQueryable property is of entity type or specify the IgnoreProperties attribute on the data context type to ignore this property.'.
經過很多故障排除後,我通過這個post發現,爲了解決這個錯誤,我發現d添加到我的實體:
1)DataServiceKey]屬性添加自定義鍵(我需要[DataServiceKey( 「PartitionKey」, 「RowKey」)])
2)通過尋找 「是PersonID」 屬性(這是對我的作品的唯一一個)
3)通過尋找一個「ID」屬性
1號是我唯一可行的。我不得不添加一個 「是PersonID」 一列,例如:
實體代碼:
public class Person : TableServiceEntity
{
public Guid PersonID { get; set; } //This is absolutely necessary to get around the aforementioned error
public string Name { get; set; }
... etc
我順利通過http://127.0.0.1/DataService/PersonDataService.svc/Person或獲取數據通過指定爲PERSONID: http://127.0.0.1/DataService/PersonDataService.svc/Person(guid'e4a924d1-a564-45d7-9e3e-fe0396d08f8e')
我想指定自定義主鍵列,如PartitionKey/RowKey(來自TableServiceE ntity),但使用此代碼沒有幫助:
[DataServiceKey("PartitionKey", "RowKey")]
public class Person : TableServiceEntity
{
public string Name { get; set; }
... etc
這是一個錯誤? 我是否必須遵守那個規則來適應我所有的實體? Person => PersonID,Foo => FooID等
我正在使用Visual Studio 2012和Silverlight 5,.NET Framework 4.0。