Frage

ich verwenden möchte DDD in einem neuen Projekt und meine Klassen modellieren ersten, erzeugt dann das Datenbankschema auf der Klassenbibliothek basiert. Mein Plan ist, diese mit dem NHibernate hbm2ddl Werkzeug SchemaExport zu tun.

Das Problem ist, dass ich nicht der SchemaExport wegen eines seltsamen Catch-22 Problems arbeiten kann es bringt mich in. Die SchemaExport erfordern ein Configuration Objekt, das selbst eine gültige NHibernate-Konfigurationsdatei sowie eine Reihe von Datenbank erfordert Zuordnungen.

Der Catch-22 ist hier, dass, wenn ich die Configure tun (), es "Could not determine the name of the table for entity 'MyEntity'; remove the 'table' attribute or assign a value to it." beschwert So ist die Configure() Methode, um die Tabelle erfordert zu existieren, während die SchemaExport soll es auf dem Configuration Basis zu schaffen, die ich nicht, weil erstellen der Tisch ist nicht nicht vorhanden.

So, wie auf der Erde bin ich eine gültige NHibernate Configuration enthält die Zuordnungen für SchemaExport erforderlich erstellen soll Configure() Wurf tatsächlich etwas Sinnvolles tun, ohne und beschweren sich, dass es nicht die Tabellen finden können, die mit SchemaExport erstellt werden sollen? Gibt es ein „Modus“ ich das Configuration Objekt festlegen kann in so es wird die Datenbank für die Existenz der angegebenen Tabellen nicht überprüfen, oder gibt es etwas, was ich tun muß?

War es hilfreich?

Lösung

Können Sie Ihre Konfigurationsdatei schreiben?

Ich benutze diese Methode die ganze Zeit ohne Tabellen vorhanden ist, und bin in der Lage, das Schema on the fly zu generieren. Meine Vermutung ist, dass Sie etwas weg in einem Ihrer .hbm Dateien haben können. Versuchen Sie Ihr Schema auf 1 Schneidetisch, bekommen sie zu arbeiten, dann bauen sie von dort oben. Als Referenz ist hier der Code, den ich das DB-Schema zu erzeugen verwenden:

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

Dies wird auch das Skript an die Konsole für Sie drücken, so kann man sehen, was SQL gegen den db erzeugt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top