2009-07-08 28 views

risposta

7

Non sono un dba quindi non posso darti una buona definizione di schema ... (per me è solo 'database' in SQL Server).

In NHibernate è possibile specificare lo schema in due posizioni: nei file di mapping, nella configurazione.

Il file di mapping consente di specificare lo schema per classe. Questo è utile quando le classi provengono da schemi diversi nello stesso server.

La configurazione SessionFactory consente di specificare uno schema predefinito (opzione default_schema) che deve essere applicato a tutti i mapping di classe che non impostano esplicitamente il proprio schema. Quindi è tutto da catturare.

Dalla lettura del collegamento sembra che ciò sia vantaggioso in termini di prestazioni perché quando si esegue una query sulla tabella "Bar" senza specificare lo schema (ad esempio il database è "Foo", quindi schema "Foo.dbo" in SQL Server) il piano di query non è t memorizzato nella cache. Ciò è probabilmente dovuto al fatto che SQL Server deve provare e risolvere quale schema utilizzare dalla stringa di connessione (Initial Catalog, Database, ecc.) Invece di renderlo esplicito nella query ("Bar" implicito - non memorizzato nella cache, "Foo.dbo .Bar "esplicito - memorizzato nella cache).

Anche in questo caso, io non sono un DBA in modo queste definizioni succhiano :)

edit:

Questo è il link per la roba di configurazione (per NH 1.2 ... che è vecchio ... ma l'opzione default_schema è lì):

https://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/session-configuration.html