Silverlight 4 LoadOperation возвращает ноль - PullRequest
0 голосов
/ 25 февраля 2011

LoadOperation на стороне клиента возвращает ноль?Как я могу это исправить?Мой код правильный?Это лучшая практика?

Серверная часть (Доменная служба:

public IQueryable<State> GetStates()
{
return this.ObjectContext.States.Include("Country") ;
}

//-----------------------------------------------------------------------

Клиентская

LoadOperation<State> loadOp;
public IEnumerable<State> Entities()
{
DSCommon _context = new DSCommon();
loadOp = _context.Load(_context.GetStatesQuery());
loadOp.Completed += complete;
loadOp.Completed += new EventHandler(LoadOp_Completed);
return loadOp.Entities;
}

EventHandler complete;

void LoadOp_Completed(object sender, EventArgs e)
{
foreach (var item in loadOp.Entities)
{
/************* item.Country is Null ********************/
}
}

1 Ответ

2 голосов
/ 25 февраля 2011

Ваш вопрос не очень понятен, так как сначала вы говорите, что LoadOperation возвращает значение null, тогда как в вашем коде вы указываете, что item.Country имеет значение null.

Однако я считаю, что вижу проблему.

В вашей доменной службе вы вызываете метод Include («Страна») в коллекции EntityCollection.Однако на стороне клиента State.Country Entity по-прежнему имеет значение null?У меня была такая же проблема некоторое время назад.Похоже, что службы RIA (или WCF) не возвращают эти сущности, если только вы не примените атрибут [Включить] к сущности, которую вы хотите вернуть, например, в классе метаданных

[MetadataType(typeof(State.StateMetadata))]
public partial class State
{
    internal sealed class StateMetadata
    {
        private StateMetadata()
        {
        }

        [Include]
        public EntityCollection<Country> Country;
    }
}

Кто-то, вероятно, сможетдать объяснение, почему это работает таким образом.Я просто знаю, что я должен был сделать это так: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...