Ejemplo n.º 1
0
 public virtual List <TResult> ToList <TResult>()
 {
     using (var conn = this.GetConnection())
     {
         return(DMObjectContainer.GetProvider().ExecuteDataReader(conn, this.CmdText, this.Parameters).ToList <TResult>());
     }
 }
Ejemplo n.º 2
0
 public virtual DataTable ToDataTable()
 {
     using (var conn = this.GetConnection())
     {
         return(DMObjectContainer.GetProvider().ExecuteDataTable(conn, this.CmdText, this.Parameters));
     }
 }
Ejemplo n.º 3
0
 public static void SetProviderType(EnumProviderType type)
 {
     lock (o)
     {
         providerType = type;
         DMObjectContainer.RegisterProvider();
     }
 }
Ejemplo n.º 4
0
        private void BeginNewTransaction()
        {
            var conn = DMObjectContainer.GetProvider().GetConnection(this.ConnectionString);

            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            this.trans = conn.BeginTransaction();
        }
Ejemplo n.º 5
0
 public override int Excute()
 {
     using (var translator = DMObjectContainer.GetTSQLTranslator())
     {
         TranResult   tr  = translator.CreateDeleteTSQL <T1>(where.LambdaExpression);
         ATSqlCommand cmd = new ATSqlCommand();
         cmd.SetCmdText(tr.CmdText);
         cmd.SetParameters(tr.Parameter.ToArray());
         cmd.SetTrans(base.trans);
         cmd.SetConnectionString(base.ConnectionString);
         return(cmd.ExecuteNonQuery());
     }
 }
Ejemplo n.º 6
0
 public virtual TResult ExecuteScalar <TResult>()
 {
     if (this.Trans == null)
     {
         using (var conn = this.GetConnection())
         {
             return(DMObjectContainer.GetProvider().ExecuteScalar(conn, this.CmdText, this.Parameters).ToType <TResult>());
         }
     }
     else
     {
         return(DMObjectContainer.GetProvider().ExecuteScalar(this.Trans, this.CmdText, this.Parameters).ToType <TResult>());
     }
 }
Ejemplo n.º 7
0
 public virtual int ExecuteNonQuery()
 {
     if (this.Trans == null)
     {
         using (var conn = this.GetConnection())
         {
             return(DMObjectContainer.GetProvider().ExecuteNonQuery(conn, this.CmdText, this.Parameters));
         }
     }
     else
     {
         return(DMObjectContainer.GetProvider().ExecuteNonQuery(this.Trans, this.CmdText, this.Parameters));
     }
 }
Ejemplo n.º 8
0
        public virtual ATSqlCommand AddParameter(string name, object value)
        {
            var param = DMObjectContainer.GetProvider().CreateParameter(name, value);

            if (this.CmdText.Contains(param.ParameterName))
            {
                if (this.Parameters == null)
                {
                    this.Parameters = new List <IDbDataParameter>();
                }
                this.Parameters.Add(param);
            }
            return(this);
        }
Ejemplo n.º 9
0
 public TResult Excute()
 {
     using (var translator = DMObjectContainer.GetTSQLTranslator())
     {
         using (TranResult tr = translator.CreateAggregateTSQL <T1>(where.LambdaExpression, select.LambdaExpression, group.LambdaExpression, join.LambdaExpression))
         {
             using (ATSqlCommand cmd = new ATSqlCommand())
             {
                 cmd.SetCmdText(tr.CmdText);
                 cmd.SetParameters(tr.Parameter.ToArray());
                 cmd.SetConnectionString(base.ConnectionString);
                 return(cmd.ExecuteScalar <TResult>());
             }
         }
     }
 }
Ejemplo n.º 10
0
 public virtual List <TResult> ToList(int top)
 {
     using (var translator = DMObjectContainer.GetTSQLTranslator())
     {
         using (TranResult tr = translator.CreateSelectListTSQL <T1>(top, where.LambdaExpression, order.LambdaExpression, select.LambdaExpression, group.LambdaExpression, join.LambdaExpression))
         {
             using (ATSqlCommand cmd = new ATSqlCommand())
             {
                 cmd.SetCmdText(tr.CmdText);
                 cmd.SetParameters(tr.Parameter.ToArray());
                 cmd.SetConnectionString(base.ConnectionString);
                 return(cmd.ToList <TResult>());
             }
         }
     }
 }
Ejemplo n.º 11
0
 public virtual TResult Single()
 {
     using (var translator = DMObjectContainer.GetTSQLTranslator())
     {
         using (TranResult tr = translator.CreateSelectTSQL <T1>(where.LambdaExpression, select.LambdaExpression, join.LambdaExpression))
         {
             using (ATSqlCommand cmd = new ATSqlCommand())
             {
                 cmd.SetCmdText(tr.CmdText);
                 cmd.SetParameters(tr.Parameter.ToArray());
                 cmd.SetConnectionString(base.ConnectionString);
                 return(cmd.ToEntity <TResult>());
             }
         }
     }
 }
Ejemplo n.º 12
0
        public virtual PageList <TResult> ToPageList(int pageIndex, int pageSize)
        {
            PageList <TResult> pl = new PageList <TResult>();

            using (var translator = DMObjectContainer.GetTSQLTranslator())
            {
                Expression <Func <T1, int> > count = (p) => p.DMCount("1");
                using (TranResult countTr = translator.CreateAggregateTSQL <T1>(where.LambdaExpression, count, group.LambdaExpression, join.LambdaExpression))
                {
                    using (ATSqlCommand countCmd = new ATSqlCommand())
                    {
                        countCmd.SetCmdText(countTr.CmdText);
                        countCmd.SetParameters(countTr.Parameter.ToArray());
                        countCmd.SetConnectionString(base.ConnectionString);
                        if (group.LambdaExpression != null)
                        {
                            pl.Total = countCmd.ToDataTable().Rows.Count;
                        }
                        else
                        {
                            pl.Total = countCmd.ExecuteScalar <int>();
                        }
                        pl.Index = pageIndex;
                        pl.Size  = pageSize;
                    }
                }

                if (pl.Total != 0)
                {
                    using (TranResult tr = translator.CreateSelectPageListTSQL <T1>(pageIndex, pageSize, where.LambdaExpression, order.LambdaExpression, select.LambdaExpression, group.LambdaExpression, join.LambdaExpression))
                    {
                        using (ATSqlCommand cmd = new ATSqlCommand())
                        {
                            cmd.SetCmdText(tr.CmdText);
                            cmd.SetParameters(tr.Parameter.ToArray());
                            cmd.SetConnectionString(base.ConnectionString);
                            pl.List = cmd.ToList <TResult>();
                        }
                    }
                }
                return(pl);
            }
        }
Ejemplo n.º 13
0
        public override int Excute()
        {
            switch (DMConfiguration.ProviderType)
            {
            case EnumProviderType.MySql:
            case EnumProviderType.MsSql:
                using (var translator = DMObjectContainer.GetTSQLTranslator())
                {
                    int        id   = 0;
                    Type       type = typeof(T1);
                    var        tm   = type.GetTableMapping();
                    var        pk   = type.GetProperty(tm.PrimaryKey.Name);
                    TranResult tr   = translator.CreateInsertTSQL <T1>(this.t, select.LambdaExpression);
                    if (pk != null && tm.PrimaryKey.IsPrimaryKey && tm.PrimaryKey.IsIdentity)
                    {
                        tr.CmdText += translator.GetIdentitySQL();
                    }
                    ATSqlCommand cmd = new ATSqlCommand();
                    cmd.SetCmdText(tr.CmdText);
                    cmd.SetParameters(tr.Parameter.ToArray());
                    cmd.SetTrans(base.trans);
                    cmd.SetConnectionString(base.ConnectionString);
                    id = cmd.ExecuteScalar();
                    if (pk != null && tm.PrimaryKey.IsPrimaryKey && tm.PrimaryKey.IsIdentity)
                    {
                        pk.SetValue(t, id, null);
                    }
                    return(id);
                }

            case EnumProviderType.Access:
                return(this.AccessExcute());

            default:
                throw new NotSupportedException("不支持的数据库类型");
            }
        }
Ejemplo n.º 14
0
 public static void Register <TService, TImpl>()
     where TService : class
     where TImpl : class, TService
 {
     DMObjectContainer.Register <TService, TImpl>(LifeStyle.Transient);
 }
Ejemplo n.º 15
0
        private int AccessExcute()
        {
            int  id   = 0;
            Type type = typeof(T1);
            var  tm   = type.GetTableMapping();
            var  pk   = type.GetProperty(tm.PrimaryKey.Name);

            using (var translator = DMObjectContainer.GetTSQLTranslator())
            {
                if (base.trans == null)
                {
                    using (var dmTrans = new DMTransaction(this.ConnectionString))
                    {
                        try
                        {
                            //这里使用事务主要是为了锁表 目的是为了获取自增ID
                            TranResult   tr  = translator.CreateInsertTSQL <T1>(this.t, select.LambdaExpression);
                            ATSqlCommand cmd = new ATSqlCommand();
                            cmd.SetCmdText(tr.CmdText);
                            cmd.SetParameters(tr.Parameter.ToArray());
                            cmd.SetTrans(dmTrans.BeginTransaction());
                            cmd.ExecuteScalar();
                            if (pk != null && tm.PrimaryKey.IsPrimaryKey && tm.PrimaryKey.IsIdentity)
                            {
                                var          identitySQL = translator.GetIdentitySQL(tm.Name);
                                ATSqlCommand accessCmd   = new ATSqlCommand();
                                accessCmd.SetCmdText(identitySQL);
                                accessCmd.SetTrans(dmTrans.BeginTransaction());
                                id = accessCmd.ExecuteScalar();
                                pk.SetValue(t, id, null);
                            }
                            dmTrans.Commit();
                        }
                        catch
                        {
                            dmTrans.Rollback();
                            throw;
                        }
                    }
                }
                else
                {
                    TranResult   tr  = translator.CreateInsertTSQL <T1>(this.t, select.LambdaExpression);
                    ATSqlCommand cmd = new ATSqlCommand();
                    cmd.SetCmdText(tr.CmdText);
                    cmd.SetParameters(tr.Parameter.ToArray());
                    cmd.SetTrans(base.trans);
                    cmd.ExecuteScalar();
                    if (pk != null && tm.PrimaryKey.IsPrimaryKey && tm.PrimaryKey.IsIdentity)
                    {
                        var          identitySQL = translator.GetIdentitySQL(tm.Name);
                        ATSqlCommand accessCmd   = new ATSqlCommand();
                        accessCmd.SetCmdText(identitySQL);
                        accessCmd.SetTrans(base.trans);
                        id = accessCmd.ExecuteScalar();
                        pk.SetValue(t, id, null);
                    }
                }
            }
            return(id);
        }
Ejemplo n.º 16
0
 private IDbConnection GetConnection()
 {
     return(DMObjectContainer.GetProvider().GetConnection(this.ConnectionString));
 }
Ejemplo n.º 17
0
 public static TService GetService <TService>() where TService : class
 {
     return(DMObjectContainer.Resolve <TService>());
 }