public IDataContext CreateDC()
 {
     if (DcConstructor == null)
     {
         var AllAssembly            = UtilTools.GetAllAssembly();
         List <ConstructorInfo> cis = new List <ConstructorInfo>();
         if (AllAssembly != null)
         {
             foreach (var ass in AllAssembly)
             {
                 try
                 {
                     var t = ass.GetExportedTypes().Where(x => typeof(DbContext).IsAssignableFrom(x) && x.Name != "DbContext" && x.Name != "FrameworkContext" && x.Name != "EmptyContext").ToList();
                     foreach (var st in t)
                     {
                         var ci = st.GetConstructor(new Type[] { typeof(ConnectionStrings) });
                         if (ci != null)
                         {
                             cis.Add(ci);
                         }
                     }
                 }
                 catch { }
             }
             string dcname = DbContext;
             if (string.IsNullOrEmpty(dcname))
             {
                 dcname = "DataContext";
             }
             DcConstructor = cis.Where(x => x.DeclaringType.Name.ToLower() == dcname.ToLower()).FirstOrDefault();
             if (DcConstructor == null)
             {
                 DcConstructor = cis.FirstOrDefault();
             }
         }
     }
     return((IDataContext)DcConstructor?.Invoke(new object[] { this }));
 }