Silverlight 4 LoadOperation返回null

时间:2011-02-25 11:10:53

标签: silverlight silverlight-4.0

客户端的LoadOperation返回null?我该如何解决?我的代码是否正确?这是最佳做法吗?

Serverside(域名服务:

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 个答案:

答案 0 :(得分:2)

您的问题不是很明确,因为首先您说LoadOperation返回null,而在您的代码中,您声明item.Country为null。

但是,我相信我看到了问题。

在您的域服务中,您可以在States EntityCollection上调用Include(“Country”)方法。但是,在客户端,State.Country实体仍为空?我前段时间遇到过同样的问题。似乎RIA Services(或WCF)不返回这些实体,除非您在元数据类中对要返回的实体应用[Include]属性

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

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

有人可能会解释为什么它以这种方式运作。我只知道我必须这样做: - )