示例#1
0
        public void Delete(T model)
        {
            string identityColumn = ClassManipulation.GetIdentityColumn <T>();
            string sql            = $@" Delete From {ClassManipulation.GetTableName<T>()} 
                              Where {identityColumn} = {string.Concat(ConnectionFactory.SqlParameter, identityColumn)}";

            IConnection conn = ConnectionFactory.GetConnection();

            var command = conn.Db.CreateCommand();

            var param = command.CreateParameter();

            param.Value         = typeof(T).GetProperty(identityColumn).GetValue(model);
            param.ParameterName = identityColumn;
            command.Parameters.Add(param);
            command.CommandText = sql;

            command.ExecuteNonQuery();
        }
示例#2
0
        public T Update(T model)
        {
            List <string> columns        = new List <string>();
            string        identityColumn = ClassManipulation.GetIdentityColumn <T>();

            foreach (var item in ClassManipulation.GetColumns <T>())
            {
                columns.Add(item);
            }

            string sql = $" Update {ClassManipulation.GetTableName<T>()} Set ";

            for (var i = 0; i < columns.Count; i++)
            {
                sql += columns[i] + " = " + string.Concat(ConnectionFactory.SqlParameter, columns[i]);
                if (i + 1 != columns.Count)
                {
                    sql += ",";
                }
            }
            sql += $" Where {identityColumn} = {string.Concat(ConnectionFactory.SqlParameter, identityColumn)}";

            IConnection conn = ConnectionFactory.GetConnection();

            var command = conn.Db.CreateCommand();

            columns.Add(identityColumn);
            foreach (var item in columns)
            {
                var param = command.CreateParameter();
                param.Value         = typeof(T).GetProperty(item).GetValue(model);
                param.ParameterName = item;
                command.Parameters.Add(param);
            }
            command.CommandText = sql;
            command.ExecuteNonQuery();
            return(model);
        }
示例#3
0
        public T Find(int identity)
        {
            string identityColumn = ClassManipulation.GetIdentityColumn <T>();
            string sql            = $@"
                Select * 
                  From {ClassManipulation.GetTableName<T>()}
                 Where {identityColumn} = {string.Concat(ConnectionFactory.SqlParameter, identityColumn)}";

            IConnection conn = ConnectionFactory.GetConnection();

            var command = conn.Db.CreateCommand();

            var param = command.CreateParameter();

            param.Value         = identity;
            param.ParameterName = identityColumn;
            command.Parameters.Add(param);
            command.CommandText = sql;

            using (IDataReader reader = command.ExecuteReader())
            {
                return(DataReaderManipulation.DataReaderToClass <T>(reader));
            }
        }
示例#4
0
        public T IdentityInsert(T model)
        {
            List <string> columns = new List <string>();

            foreach (var item in ClassManipulation.GetColumns <T>())
            {
                columns.Add(item);
            }

            string sql = $" Insert Into {ClassManipulation.GetTableName<T>()} (";

            for (var i = 0; i < columns.Count; i++)
            {
                sql += columns[i];
                if (i + 1 != columns.Count)
                {
                    sql += ",";
                }
            }
            sql += ") values (";
            for (var i = 0; i < columns.Count; i++)
            {
                sql += string.Concat(ConnectionFactory.SqlParameter, columns[i]);
                if (i + 1 != columns.Count)
                {
                    sql += ",";
                }
            }
            sql += ")";

            IConnection conn = ConnectionFactory.GetConnection();

            var command = conn.Db.CreateCommand();

            foreach (var item in columns)
            {
                var param = command.CreateParameter();
                param.Value         = typeof(T).GetProperty(item).GetValue(model);
                param.ParameterName = item;
                command.Parameters.Add(param);
            }
            command.CommandText = sql;

            var identityProp = typeof(T).GetProperty(ClassManipulation.GetIdentityColumn <T>());

            command.ExecuteNonQuery();
            int pkValue = 0;

            if (ConnectionFactory.ConnectionType == ConnectionEnum.MySql)
            {
                var cmmd = conn.Db.CreateCommand();
                command.CommandText = "SELECT LAST_INSERT_ID()";
            }
            else if (ConnectionFactory.ConnectionType == ConnectionEnum.SqlServer)
            {
                var cmmd = conn.Db.CreateCommand();
                command.CommandText = "SELECT SCOPE_IDENTITY()";
            }

            using (IDataReader reader = command.ExecuteReader())
            {
                if (reader != null && reader.Read())
                {
                    pkValue = Convert.ToInt32(reader.GetInt64(0));
                }

                identityProp.SetValue(model, pkValue);
                return(model);
            }
        }