实体框架6有时不获取子表的数据

问题描述

我正在使用Entity Framework 6从sql Server提取为UiPath项目创建的自定义活动(C#.NET库)中的父表和一些子表的数据。首先创建数据库,然后使用带有现有数据库选项的代码优先生成类。

我注意到,对于子表“ Table18”(列表/集合)之一,有时我的查询获取数据(未引发异常),而其他时候相同数据获取无需任何代码更改即可完全正常。以下是与查询类似的代码示例。

protected override void Execute(CodeActivityContext context) 
        { 
            var server = "<server name>”;
            var database = "<db name>”; 
            var appDBServer = "<app db server name>”; 
            var appdbname = "<app db name>"; 
            var filter = "”;

            Contract contract = null; 

            using (var dbContext = new Model1(server,database)) 
            { 
                contract = dbContext.Contracts 
                        .Where(c => c.Table1 != null && c.Table1.StatusID == 5 && 
                            (string.IsNullOrEmpty(filter) || c.Reference.Contains(filter)) && 
                            (string.IsNullOrEmpty(appDBServer) || c. AppDBServer == appDBServer) &&  
                            (string.IsNullOrEmpty(appdbname) || c. Appdbname == appdbname)) 
                        .Include(c => c.Table1).Include(c => c.Table1.Table2) 
                        .Include(c => c.Table3.Select(b => b.Table4))
                        .Include(c => c.Table5).Include(c => c.Table6).Include(c => c.Table7).Include(c => c.Table8) 
                        .Include(c => c.Table9).Select(dc => dc.Table10)) 
                        .Include(c => c.Table11).Include(c => c.Table12).Include(c => c.Table13).Include(c => c.Table14) 
                        .Include(c => c.Table15).Include(c => c.Table16).Include(c => c.Table17) 
                        .Include(c => c.Table18).Include(c => c.Table19).Include(c => c. Table20).Include(c => c.Table21) 
                        .OrderBy(c => c.Table1.ReceivedOn).ThenBy(c => c.Year) 
                        .FirstOrDefault(); 

                if (contract != null) 
                { 
                    contract.Table1.StatusID = 1; 
                    contract.Table1.ProcessstartDate = DateTime.Now; 
                    contract.Table1.RetryCount++;
                    dbContext.SaveChanges(); 
                } 
            } 

            Contract.Set(context,contract); 
        }

我已禁用了延迟加载,并且每次获取后都会处理db上下文。我在数据库上下文构造函数中使用以下代码

this.Configuration.LazyLoadingEnabled = false; 
this.Configuration.ProxyCreationEnabled = false; 
Database.Setinitializer<Model1>(null); 

任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)