Службы данных WCF, разверните проблему - PullRequest
2 голосов
/ 17 марта 2011

Я внедряю службы данных WCF с использованием сущностей DbContext и POCO.

В настоящее время я представляю две сущности, SalesOrder и Customer.

У SalesOrder есть свойство Customer, которым я должен бытьможно получить с помощью этого запроса: http://localhost:902/ShopDataService.svc/SalesOrders()?$expand=Customer

Однако, объект Customer не возвращается.Это блок XML для каждой возвращаемой записи (SalesOrder) ...

<entry>
<id>http://localhost:902/ShopDataService.svc/SalesOrders(60)</id>
<title type="text"></title>
<updated>2011-03-17T14:58:11Z</updated>
<author>
  <name />
</author>
<link rel="edit" title="SalesOrder" href="SalesOrders(60)" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/ShippingAddress" type="application/atom+xml;type=entry" title="ShippingAddress" href="SalesOrders(60)/ShippingAddress" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/InvoiceAddress" type="application/atom+xml;type=entry" title="InvoiceAddress" href="SalesOrders(60)/InvoiceAddress" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Customer" type="application/atom+xml;type=entry" title="Customer" href="SalesOrders(60)/Customer">
  <m:inline />
</link>
<category term="CarterShop.Commerce.Entities.SalesOrder" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
  <m:properties>
    <d:Id m:type="Edm.Int32">60</d:Id>
    <d:Created m:type="Edm.DateTime">2011-03-12T15:23:47.07</d:Created>
    <d:ItemCost m:type="Edm.Decimal">8.00</d:ItemCost>
    <d:ShippingCost m:type="Edm.Decimal">0.00</d:ShippingCost>
    <d:ShippingVat m:type="Edm.Decimal">0.00</d:ShippingVat>
    <d:ItemVat m:type="Edm.Decimal">1.60</d:ItemVat>
    <d:Total m:type="Edm.Decimal">9.60</d:Total>
    <d:ShippingAddressId m:type="Edm.Int32" m:null="true" />
    <d:InvoiceAddressId m:type="Edm.Int32" m:null="true" />
    <d:Paid m:type="Edm.DateTime" m:null="true" />
    <d:Shipped m:type="Edm.DateTime" m:null="true" />
    <d:TransactionId m:null="true" />
    <d:OrderNumber>000068</d:OrderNumber>
    <d:SalesOrderStageId m:type="Edm.Int32">2</d:SalesOrderStageId>
    <d:CustomerId m:type="Edm.Int32">2</d:CustomerId>
    <d:CancellationReasonId m:type="Edm.Int32" m:null="true" />
    <d:ShippingBracketId m:type="Edm.Int32" m:null="true" />
  </m:properties>
</content>

Вы можете сказать, что он пытается вернуть объект Customer, потому что он отправляетэлемент, как будто у него нет свойств, но он настроен точно так же, как объект SalesOrder.

Кто-нибудь сталкивался с этой проблемой раньше?Изменить: Я выставляю данные, как это (поэтому нет проблем с разрешениями).

config.SetEntitySetAccessRule("SalesOrders", EntitySetRights.All);
config.SetEntitySetAccessRule("Customers", EntitySetRights.All);
config.SetEntitySetAccessRule("Addresses", EntitySetRights.All);

1 Ответ

1 голос
/ 08 марта 2012

Это не поддерживается должным образом в службах данных. Как обычно - когда вам нужно что-то помимо Hello-World, вы должны писать правильные приложения, а не пытаться использовать «волшебные» решения, такие как Data Services.

...