Pregunta

Quiero usar DDD en un nuevo proyecto y modelar primero mis clases, luego genere el esquema de la base de datos basado en la biblioteca de clases. Mi plan es hacer esto con la herramienta NHibernate hbm2ddl SchemaExport .

El problema es que no puedo hacer que el SchemaExport funcione debido a un extraño problema de catch-22 en el que me coloca. El SchemaExport requiere un Objeto de configuración que requiere un archivo de configuración NHibernate válido, así como un conjunto de asignaciones de bases de datos.

El catch-22 aquí es que cuando hago el Configure (), se queja " No se pudo determinar el nombre de la tabla para la entidad 'MyEntity'; elimine el atributo 'tabla' o asígnele un valor. " Por lo tanto, el método Configure () requiere que exista la tabla, mientras que se supone que SchemaExport para crearlo en función de la Configuración que no puedo crear porque la tabla no existe.

Entonces, ¿cómo diablos se supone que debo crear una Configuración de NHibernate válida que contenga las asignaciones requeridas para SchemaExport para hacer algo realmente útil sin tener Configure () lanza y se queja de que no puede encontrar las tablas que se crearán con SchemaExport ? ¿Existe un " modo " Puedo configurar el objeto Configuration para que no compruebe la existencia de las tablas dadas en la base de datos, ¿o hay algo más que deba hacer?

¿Fue útil?

Solución

¿Puede publicar su archivo de configuración?

Uso este método todo el tiempo sin tablas presentes y puedo generar el esquema sobre la marcha. Supongo que puede tener algo apagado en uno de sus archivos .hbm. Intente reducir su esquema a 1 tabla, hacer que funcione y luego construirlo desde allí. Como referencia, aquí está el código que uso para generar el esquema db:

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

Esto también empujará el script a la consola por usted, para que pueda ver qué SQL se genera contra la base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top