Запрос данных из службы данных WCF в ошибке Silverlight - PullRequest
1 голос
/ 28 февраля 2012

У меня есть объект модели ADO.NET, который отражает базу данных оракула, и Служба WCF, которая предоставляет доступ к этой модели ADO.NET.В своем коде службы WCF у меня есть следующее:

config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
//config.SetServiceOperationAccessRule("MyServiceOperation",ServiceOperationRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;

Я добавил ссылку на эту службу в своем приложении silverlight 5.Затем в следующем коде я получаю сообщение об ошибке:

Uri WCFUri = new Uri(HtmlPage.Document.DocumentUri, "WcfDataService.svc");
WCF_Service.Entities Database = new WCF_Service.Entities(WCFUri);

var buildings = from building in Config.Database.BUILDINGs
            select building.BLDG_ID;

var buildingsQuery = (DataServiceQuery<string>)buildings;

buildingsQuery.BeginExecute(buildingsResult =>
{
    foreach (string buildingId in buildingsQuery.EndExecute(buildingsResult))
        BuildingsList.Items.Add(new ListItem(buildingId.Trim(), false));
    BuildingListBusyIndicator.IsBusy = false;
}, null);

Ошибка:

Navigation properties can only be selected from a single resource. Specify a key predicate to restrict the entity set to a single instance.

Я заблудился в том, что проблема.Заранее спасибо.

1 Ответ

0 голосов
/ 14 июля 2012

Проблема в том, что ADO.NET Data Services не поддерживает функцию проецирования.

Вместо выбора свойств необходимо выбрать объекты.

НЕВЕРНО

var buildings = from building in Config.Database.BUILDINGs
            select building.BLDG_ID;

ПРАВИЛЬНО

var buildings = from building in Config.Database.BUILDINGs
            select building;

(я понимаю, что в вашем случае это исправление бессмысленно, но технически это правда)

ИЛИ вы можете использовать оболочку, например:

var buildings = from building in Config.Database.BUILDINGs
            select new { Id = building.BLDG_ID };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...