Как использовать транзакцию для файла .DBF с помощью Odbc? - PullRequest
1 голос
/ 06 сентября 2010

У меня проблема с использованием файлов .dbf.Я могу делать операции CRUD, но я получаю исключение, когда пытаюсь использовать транзакции.Я делаю так:

    public void AddRolesToUser(string user, string[] roles)
    {
        using (OdbcConnection connection = new OdbcConnection(ConnectionString))
        {
            OdbcCommand command = new OdbcCommand();
            OdbcTransaction transaction = null;
            command.Connection = connection;
            try
            {
                connection.Open();
                transaction = connection.BeginTransaction();
                command.Connection = connection;
                command.Transaction = transaction;
                command.CommandText = "Delete From Roles Where User='" + user + "'";
                command.ExecuteNonQuery();
                if (roles != null)
                {
                    foreach (string role in roles)
                    {
                        command.CommandText = "Insert Into Roles(User, Role) Values('" + user + "', '" + role + "')";
                        command.ExecuteNonQuery();
                    }
                }
                transaction.Commit();
            }
            catch(OdbcException ex)
            {
                transaction.Rollback();
            }
        }
    }

Когда он достигает подключения. BeginTransaction () я получаю это исключение

[Microsoft][ODBC dBase Driver]Optional feature not implemented

Это моя строка подключения

 "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;" + "Dbq=" + root + ";"

Iповторить, я могу делать операции CRUD хорошо.

1 Ответ

5 голосов
/ 06 сентября 2010

DBF-файлы - это простое хранилище данных - это просто файлы с произвольным доступом со связанными индексными файлами.Не существует никакого процесса или управляющего файла для управления блокировками и откатами, которые были бы необходимы для разрешения транзакций.

Если вам нужны транзакции, вам придется изменить хранилище файлов.

...