示例#1
0
        public void Save(T data, bool insertWhenNotExists)
        {
            var insertColumnList = new List <string>();
            var insertValueList  = new List <string>();
            var updateList       = new List <string>();
            var parameters       = new Dictionary <string, object>();

            foreach (var property in _columnInfo)
            {
                insertColumnList.Add(property.Value);
                insertValueList.Add(string.Format("@{0}", property.Value));
                updateList.Add(string.Format("{0}=@{0}", property.Value));
                parameters.Add(string.Format("@{0}", property.Value), typeof(T).GetProperty(property.Key).GetGetMethod().Invoke(data, null));
            }

            var sqlCommandText = insertWhenNotExists ?
                                 string.Format(_saveSqlCommand,
                                               _tableName,
                                               string.Join(",", insertColumnList.ToArray()),
                                               string.Join(",", insertValueList.ToArray()),
                                               string.Join(",", updateList.ToArray())) :
                                 string.Format(_updateSqlCommand,
                                               _tableName,
                                               string.Join(",", updateList.ToArray()));

            _sqlHelper.ExcuteNonQueryInTransaction(sqlCommandText, parameters);
        }