Exemplo n.º 1
0
 /// <summary>
 /// 创建操作命令集合对象。
 /// </summary>
 /// <param name="context">操作上下文。</param>
 public OperateCommandCollection(DbOperateContext context)
 {
     _ExecutionMode   = context.Context.Database.Provider.ExecutionMode;
     operationContext = context;
     commands         = new List <OperateCommandBase>();
     CheckParameterCount();
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 /// <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;
     }
 }
Exemplo n.º 4
0
        /// <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;
            }
        }
Exemplo n.º 5
0
        /// <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();
 }
Exemplo n.º 7
0
 /// <summary>
 /// 创建命令对象。
 /// </summary>
 /// <param name="context">操作执行上下文</param>
 public MultiOperateCommand(DbOperateContext context)
     : base(context)
 {
 }