首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

silverlight加载导航属性的有关问题!

2012-03-19 
silverlight加载导航属性的问题!求助!在添加Ado.Net实体模型后自动生成的实体类的导航属性上加上[Include]

silverlight加载导航属性的问题!求助!
在添加Ado.Net实体模型后自动生成的实体类的导航属性上加上[Include]
并在查询方法中使用Include("子表")可以加载指定的导航属性。

C# code
        internal sealed class CompanysMetadata        {            // 元数据类不会实例化。            private CompanysMetadata()            {            }            public Nullable<short> AddAccountId { get; set; }            public Nullable<DateTime> AddTime { get; set; }            public short CompanyId { get; set; }            public Nullable<short> CompanyLevel { get; set; }            public string CompanyName { get; set; }            [Include]            public EntityCollection<Departments> Departments { get; set; } //添加Include关键字            public Nullable<DateTime> LastUpdateTime { get; set; }            public Nullable<short> ParentId { get; set; }            public string Remark { get; set; }        }    }


C# code
        // TODO:        // 考虑约束查询方法的结果。如果需要其他输入,        //可向此方法添加参数或创建具有不同名称的其他查询方法。        // 为支持分页,需要向“Companys”查询添加顺序。        public IQueryable<Companys> GetCompanys()        {            return this.ObjectContext.Companys.Include("Departments"); //查询公司时加载部门子表        }


C# code
            AccountsDomainContext context = new AccountsDomainContext();            context.Load(context.GetCompanysQuery(), callback =>                {                    if (!callback.HasError)                    {                        dataGrid1.ItemsSource = callback.Entities; //这时查询的结果的导航属性Departments已经赋值                    }                }, null);


当一个表有非常多的子表,甚至子表还有子表时,如果查询比较详细的信息需要Include非常多子表。这时跟踪SQL服务器发现系统将LINQ转换成的sql命令非常长,查询消耗的时间也非常多,甚至让IE假死......请教大家是不是我这方法不对?大家在实际开发中是如何解决这样的问题的?谢谢。






[解决办法]
实际开发中直接使用WebService处理即可。你这种情况子表太多不利于实体模型对应。
简单处理更好一些。

热点排行