/// <summary>
        /// 删除, Version控制
        /// </summary>
        public DatabaseResult Delete <T>(T item, TransactionContext transContext) where T : DatabaseEntity, new()
        {
            if (!item.IsValid())
            {
                return(DatabaseResult.Fail("entity check failed."));
            }

            DatabaseEntityDef entityDef = _entityDefFactory.GetDef <T>();

            if (!entityDef.DatabaseWriteable)
            {
                return(DatabaseResult.NotWriteable());
            }

            long id      = item.Id;
            long version = item.Version;
            WhereExpression <T> condition = Where <T>().Where(t => t.Id == id && t.Deleted == false && t.Version == version);

            try
            {
                IDbCommand dbCommand = _sqlBuilder.CreateDeleteCommand(condition, "default");

                long rows = _databaseEngine.ExecuteCommandNonQuery(transContext?.Transaction, entityDef.DatabaseName, dbCommand);

                if (rows == 1)
                {
                    return(DatabaseResult.Succeeded());
                }
                else if (rows == 0)
                {
                    return(DatabaseResult.NotFound());
                }

                throw new Exception("Multiple Rows Affected instead of one. Something go wrong.");
            }
            catch (DbException ex)
            {
                //_logger.LogCritical(ex.Message);
                return(DatabaseResult.Fail(ex));
            }
        }