Domanda

Voglio usare DDD in un nuovo progetto e modellare prima le mie lezioni, quindi generare lo schema del database basato sulla libreria di classi. Il mio piano è di farlo con lo strumento hibm2ddl NHibernate SchemaExport .

Il problema è che non riesco a far funzionare SchemaExport a causa di uno strano problema di cattura 22 che mi pone. SchemaExport richiede un Configurazione che richiede esso stesso un file di configurazione NHibernate valido e un set di mappature del database.

Il catch-22 qui è che quando eseguo Configure (), si lamenta " Impossibile determinare il nome della tabella per l'entità 'MyEntity'; rimuovi l'attributo 'table' o assegna un valore ad esso. " Quindi il metodo Configure () richiede che la tabella esista, mentre si suppone che SchemaExport per crearlo in base al Configuration che non posso creare perché la tabella non esiste.

Quindi, come mai dovrei creare un > Configurazione NHibernate valido contenente i mapping richiesti per SchemaExport per fare effettivamente qualcosa di utile senza avere Configure () buttare e lamentarsi che non riesce a trovare le tabelle che devono essere create con SchemaExport ? Esiste una modalità " Posso impostare l'oggetto Configuration in modo che non verifichi l'esistenza del database nelle tabelle fornite o c'è qualcos'altro che devo fare?

È stato utile?

Soluzione

Puoi pubblicare il tuo file di configurazione?

Uso sempre questo metodo senza tabelle presenti e sono in grado di generare lo schema al volo. La mia ipotesi è che potresti avere qualcosa in uno dei tuoi file .hbm. Prova a ridurre lo schema in 1 tabella, facendolo funzionare, quindi costruendolo da lì. Come riferimento, ecco il codice che utilizzo per generare lo schema db:

    var cfg = new Configuration();
    cfg.Configure();
    var schema = new SchemaExport(cfg);
    schema.Create(true, true);

Questo spingerà anche lo script sulla console per te, così puoi vedere quale SQL viene generato contro il db.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top