/// <summary> /// 创建操作命令集合对象。 /// </summary> /// <param name="context">操作上下文。</param> public OperateCommandCollection(DbOperateContext context) { _ExecutionMode = context.Context.Database.Provider.ExecutionMode; operationContext = context; commands = new List <OperateCommandBase>(); CheckParameterCount(); }
private static DbObjectsOperateBase GetInsertOperate <T>(object item, DbOperateContext executor) where T : class { var list = executor.Find(typeof(T)); if (list != null) { return(list.Where(a => a.Type == EOperateType.InsertObjects || a.Type == EOperateType.InsertPropertys) .OfType <DbObjectsOperateBase>().FirstOrDefault(a => a.Contains(item))); } return(null); }
/// <summary> /// 创建命令对象。 /// </summary> /// <param name="context">操作执行上下文。</param> /// <param name="mode">执行模式。</param> public SingleOperateCommand(DbOperateContext context, EExecutionMode mode) : base(context) { if (mode == EExecutionMode.SingleOperation) { ExecuteMode = ECommandExecuteMode.Simple; } else { ExecuteMode = ECommandExecuteMode.Split; } }
/// <summary> /// 创建数据库操作命令对象。 /// </summary> /// <param name="context">操作上下文。</param> public DbOperateCommand(DbOperateContext context) { Executor = context; var database = context.Context.Database; var provider = database.Provider; factory = provider.Factory; var feature = database.Feature; if (feature.MaxParameterCount.HasValue) { maxParameterCount = feature.MaxParameterCount.Value; } else { maxParameterCount = short.MaxValue; } }
/// <summary> /// 初始化<see cref="DbContext"/>实例对象。 /// </summary> private DbContext() { Executor = new DbOperateContext(this); Configuration = new DbContextConfiguration(this); var propertys = _PropertyInfoCache.GetOrAdd(GetType(), type => { return(type.GetProperties() .Where(a => a.PropertyType.IsGenericType && a.CanWrite && a.PropertyType.GetGenericTypeDefinition() == typeof(DbSet <>)) .Select(a => new PropertyConstructor() { Property = a, Constructor = a.PropertyType.GetConstructors().First() }) .ToArray()); }); var para = new object[] { this, null }; foreach (var pro in propertys) { pro.Property.SetValue(this, pro.Constructor.Invoke(para)); } }
/// <summary> /// 创建操作命令集合对象。 /// </summary> /// <param name="context">操作上下文。</param> public DbOperateCommandCollection(DbOperateContext context) { operationContext = context; commands = new List <DbOperateCommand>(); CheckParameterCount(); }
/// <summary> /// 创建命令对象。 /// </summary> /// <param name="context">操作执行上下文</param> public MultiOperateCommand(DbOperateContext context) : base(context) { }