Silverlight RIA Services相关实体在服务器上加载但不在客户端加载

时间:2013-04-03 19:10:14

标签: c# silverlight entity-framework ria

我有一个包含我的实体的extenal类库。在Silverlight托管项目中,我有一个域服务类,将这些内容暴露给silverlight应用程序。当我使用include方法查询实体时,它会在服务器上加载相关实体,但它们不会传递给客户端。这是实体 - 我在stackoverflow上搜索解决方案之后最终添加了一个元数据类,但这并没有改变任何东西:

[MetadataTypeAttribute(typeof(ProjectManager.ProjectManagerMetadata))]
public partial class ProjectManager
{
    public ProjectManager()
    {
        this.Jobs = new HashSet<Job>();
    }

    [Key]
    public int ProjectManagerKey { get; set; }

    public string TenantID { get; set; }

    public string Name { get; set; }

    public string UserID { get; set; }

    public string PIN { get; set; }

    public ICollection<Job> Jobs { get; set; }

    internal sealed class ProjectManagerMetadata
    {
        private ProjectManagerMetadata()
        {
        }

        [Include]
        [Association("ProjectManagerJob", "ProjectManagerKey", "JobKey")]
        public ICollection<Job> Jobs { get; set; }
    }
}

这是查询 - 我试过“ToList()”认为它可能会有所帮助。它没有

    public IQueryable<ProjectManager> GetProjectManagers()
    {
        List<ProjectManager> proj = (from p in trs.ProjectManagers.Include("Jobs") where p.TenantID == tenantID select p).ToList();
        return proj.AsQueryable();
    }

在服务器端的调试器中,加载了一个ProjectManager和他的七个相关作业,但是在silverlight应用程序中(在调试器中)没有相关的作业。我错过了什么?

编辑:这是客户端代码:

    public void InitialDataLoad()
    {
       busyHelper.Busy("Loading...");
       trx.Load(trx.GetProjectManagersQuery(), this.InitialLoadCompleted, null);
    }

    private void InitialLoadCompleted(LoadOperation loadOp)
    {
        busyHelper.BusyDone();
        if (!loadOp.HasError)
        {
            foreach (ProjectManager manager in trx.ProjectManagers)
            {
                foreach (Job job in manager.Jobs)
                {
                 // no jobs returned 
                }
            }
        }
        else
        {
            ErrorWindow.CreateNew(loadOp.Error);
            loadOp.MarkErrorAsHandled();
        }
    }

更新

事实证明,正在填充datacontext的作业实体集(代码中的trx),但个别项目管理者的jobs属性不是。换句话说:

trx.ProjectManagers.Count = 4
trx.Jobs.Count = 9
trx.ProjectManagers[2].Jobs.Count = 0 //(Should be 9)
trx.Jobs[0].ProjectManagers.Count = 0 //(Should be 1)

0 个答案:

没有答案