コード例 #1
0
        /// <summary>
        ///     更新数据
        /// </summary>
        /// <param name="entity">更新数据的实体</param>
        protected bool InsertInner(TData entity)
        {
            PrepareSave(entity, DataOperatorType.Insert);
            using (var cmd = DataBase.CreateCommand())
            {
                var isIdentitySql = SetInsertCommand(entity, cmd);
                SqliteDataBase.TraceSql(cmd);
                if (isIdentitySql)
                {
                    var key = cmd.ExecuteScalar();
                    if (key == DBNull.Value || key == null)
                    {
                        return(false);
                    }
                    entity.SetValue(KeyField, key);
                }
                else
                {
                    if (cmd.ExecuteNonQuery() == 0)
                    {
                        return(false);
                    }
                }

                var sql = AfterUpdateSql(PrimaryKeyConditionSQL);
                if (!string.IsNullOrEmpty(sql))
                {
                    DataBase.Execute(sql, CreatePimaryKeyParameter(entity.GetValue(KeyField)));
                }
            }
            EndSaved(entity, DataOperatorType.Insert);
            return(true);
        }
コード例 #2
0
        /// <summary>
        ///     插入数据
        /// </summary>
        /// <param name="entity">插入数据的实体</param>
        private async Task <bool> UpdateInnerAsync(TData entity)
        {
            if (UpdateByMidified && !entity.__status.IsModified)
            {
                return(false);
            }
            int result;

            PrepareSave(entity, DataOperatorType.Update);
            string sql = GetModifiedSqlCode(entity);

            if (sql == null)
            {
                return(false);
            }

            using (var cmd = DataBase.CreateCommand())
            {
                SetUpdateCommand(entity, cmd);
                cmd.CommandText = CreateUpdateSql(sql, PrimaryKeyConditionSQL);

                SqliteDataBase.TraceSql(cmd);

                result = await cmd.ExecuteNonQueryAsync();
            }

            if (result <= 0)
            {
                return(false);
            }

            await EndSaved(entity, DataOperatorType.Update);

            return(true);
        }
コード例 #3
0
        /// <summary>
        ///     条件更新实体中已记录更新部分
        /// </summary>
        /// <param name="entity">实体</param>
        /// <param name="lambda">条件</param>
        /// <returns>更新行数</returns>
        public int SetValue(TData entity, Expression <Func <TData, bool> > lambda)
        {
            if (UpdateByMidified && !entity.__status.IsModified)
            {
                return(-1);
            }
            var setValueSql = GetModifiedSqlCode(entity);

            if (setValueSql == null)
            {
                return(-1);
            }
            var convert = Compile(lambda);
            var sql     = CreateUpdateSql(setValueSql, convert.ConditionSql);
            int result;

            using (var cmd = DataBase.CreateCommand())
            {
                SetUpdateCommand(entity, cmd);
                cmd.CommandText = CreateUpdateSql(sql, convert.ConditionSql);
                SqliteDataBase.TraceSql(cmd);
                result = cmd.ExecuteNonQuery();
            }
            return(result);
        }
コード例 #4
0
        /// <summary>
        ///     条件更新实体中已记录更新部分
        /// </summary>
        /// <param name="entity">实体</param>
        /// <param name="lambda">条件</param>
        /// <returns>更新行数</returns>
        public async Task <int> SetValueAsync(TData entity, Expression <Func <TData, bool> > lambda)
        {
            if (UpdateByMidified && !entity.__status.IsModified)
            {
                return(-1);
            }
            var setValueSql = GetModifiedSqlCode(entity);

            if (setValueSql == null)
            {
                return(-1);
            }
            var convert = Compile(lambda);

            using var cmd = DataBase.CreateCommand();
            SetUpdateCommand(entity, cmd);
            cmd.CommandText = CreateUpdateSql(setValueSql, convert.ConditionSql);
            SqliteDataBase.TraceSql(cmd);
            return(await cmd.ExecuteNonQueryAsync());
        }