コード例 #1
0
ファイル: ObjectContext.cs プロジェクト: lusionx/lusionkit
        /// <summary>
        ///
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public int Insert(TableBase model)
        {
            var tableType = model.GetType();
            var tableAttr = AttrCache.Get(tableType);
            var cmd       = Provider.CreateCommand();

            cmd.CommandText = SqlInsert(tableAttr);
            cmd.CommandType = System.Data.CommandType.Text;
            cmd.Connection  = Connection;

            DbParameter par = null;

            foreach (var column in tableAttr.Columns)
            {
                par               = Provider.CreateParameter();
                par.Direction     = ParameterDirection.Input;
                par.ParameterName = ParamPerFix + column.Name;
                par.DbType        = column.DbType;
                if (model.IsChangeColumn(column.Name))
                {
                    par.Value = Special.FixValue(column.GetValue(model));
                }
                else
                {
                    par.Value = column.DefaultVal;
                }
                if (!column.Nullable && par == null)
                {
                    throw new System.Data.NoNullAllowedException(tableAttr.Name + "." + column.Name);
                }
                cmd.Parameters.Add(par);
            }
            try
            {
                Connection.Open();
                return(cmd.ExecuteNonQuery());
            }
            catch (DbException ex)
            {
                throw ex;
            }
            finally
            {
                Connection.Close();
            }
        }