Pergunta

Usando SubSonic 3 ActiveRecord, eu código gerado a partir de um banco de dados existente que tinha as chaves estrangeiras. Para garantir esquema do banco é sempre correto quando bancos de dados de comutação, coloquei migração de código no início do aplicativo, usando IDataProvider.MigrateToDatabase<MyClass>() para cada classe gerada por ActiveRecord.tt. Acontece que, código de migração faz chaves estrangeiras não regenerados.

Como devo lidar com FKs:

  • Esqueça FKs completamente e lidar com exclusões em cascata no código. Prós: A maneira Rails, a lógica do negócio é mantido no código. Contras: necessidade de transações punho, o código torna-se muito mais feia; ida e volta de esquema entre banco de dados e ActiveRecord torna-se impossível se do banco de dados é ligado / apagado (necessidade de sempre manter o esquema original para regenerar / modificar o código AR, caso contrário gerado propriedades de um-para-muitos serão perdidos?); Além disso, os meus colegas pode pensar que eu sou louco.
  • Adicionar um passo para migrações para criar FKs manualmente. Prós: esquema será sempre atualizado; código AR sempre será possível regenerar. Contras: (questão menor) dependência do banco de dados
  • De alguma forma encontrar uma maneira de definir as relações FK no código para que o esquema pode ser migrados corretamente.

Am I fazendo errado? Eu apreciaria qualquer conselho.

Foi útil?

Solução

Eu estou trabalhando em coisas FK agora para as aulas e, acredite ou não - é bastante difícil. Se sua classe pai contém uma lista de uma classe filha - é muitos / muitos? Talvez - se sua classe filho contém uma volta de referência. Isso é uma suposição fraco (bi-direcional não é um projeto bom).

De qualquer forma.

AR é significou mais para DB-primeiras pessoas - assim criar o seu DB como você gosta, modelos AR, em seguida, executar. Seus FKs serão homenageados e assim por diante.

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