Modificando um esquema de banco de dados SQLite e de dados através SubSonic 3 dentro de uma transação

StackOverflow https://stackoverflow.com/questions/1478961

Pergunta

Estou usando o Visual Studio 2008, C #, SQLite via System.Data.SQLite com SubSonic 3. Meu aplicativo tenha chegado a um estado onde eu preciso atualizar o esquema de banco de dados (colunas add, gatilhos, etc), em seguida, adicionar novos registros via SubSonic gerado ActiveRecord objetos -. tudo dentro do escopo de uma única transação para que qualquer falha poderia ser bem revertida

O ideal é que esta é uma espécie do que eu estava esperando para fazer:

Begin Transaction
try
  Update Schema to latest version
  Use SubSonic objects to add new records/modify existing
  Commit Transaction
catch
  Rollback Transaction

Infelizmente, isso não funciona. Todas as alterações de esquema estão actualmente a ser via SubSonic.Query.CodingHorror, que não parece respeitar as transações. Existe uma maneira de executar ambas as alterações de esquema e alterações de dados SubSonic no âmbito de uma única transação?

Foi útil?

Solução

Eu acho que eu encontrei a resposta à minha pergunta: usar a mesma conexão de banco de dados para todas as ações e transações de uso sobre a conexão de um banco de dados. Desde que eu não tinha contado SubSonic como lidar com todas as conexões de banco de dados para mim - é utilizado o método padrão, uma conexão por pesquisa ou criado objeto ou CodingHorror. Desde transações podem não conexões de banco de dados de amplitude, a serra comportamento que eu estava totalmente esperado.

Uma vez eu criei minha própria conexão com o banco e fez as pesquisas, cria e alterações de esquema CodingHorror sobre ele, todo o material transação começar a trabalhar corretamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top