2014-12-02 4 views
0

Я пытаюсь изучить nhibernate. Я понимаю, как создавать таблицы и сущность. Но я не могу понять, как создать новую схему с помощью nHibernate.NHibernate определить имя схемы

Я искал и обнаружил, что с помощью «ExposeConfiguration» вы можете создать схему, но я не могу понять, где я могу указать свое новое имя схемы.

ответ

0

Существует довольно четкая документация:

Таким образом, имя схемы вы можете в основном установить для каждого вида класса/таблицы:

public MyEntityMap() 
{ 
    ... 
    Schema("mySchema"); 
} 

По умолчанию может установить следующим образом:

MsSqlConfiguration.MsSql2005 
    .UseOuterJoin() 
    .DefaultSchema("dbo"); 

И это некоторое поколение на месте, а также:

private static ISessionFactory CreateSessionFactory() 
{ 
    return Fluently.Configure() 
    .Database(
     SQLiteConfiguration.Standard 
     .UsingFile("firstProject.db") 
    ) 
    .Mappings(m => 
     m.FluentMappings.AddFromAssemblyOf<Program>()) 
    .ExposeConfiguration(BuildSchema) 
    .BuildSessionFactory(); 
} 

private static void BuildSchema(Configuration config) 
{ 
    // delete the existing db on each run 
    if (File.Exists(DbFile)) 
    File.Delete(DbFile); 

    // this NHibernate tool takes a configuration (with mapping info in) 
    // and exports a database schema from it 
    new SchemaExport(config) 
    .Create(false, true); 
} 

ПРОДЛИТЕ: Как создать сама схема? (например mySchemaName)

С НВМ мы можем ввести этот внедренный ресурс:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
    namespace="MyNamespace" assembly="MyAssembly"> 

    <database-object> 

    <create > 
     IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'mySchemaName') 
     EXEC('CREATE SCHEMA mySchemaName') 
     GO 
    </create> 
    <drop></drop> 
    </database-object> 

</hibernate-mapping> 

, если этот сценарий будет включен в беглую конфигурацию, как первые, он будет создавать схемы для нас:

+0

Схема («mySchema»); этот оператор говорит, что эта таблица принадлежит этой Scehma (но схема уже должна присутствовать в DB). Насколько мне известно, этот оператор не создает новую схему в базе данных. правильно ? – Sumit

+0

Я вижу ... теперь, что вы имеете в виду ... Я не помню, как я это решил. –

+0

Я нашел это. Мы можем использовать специальные объекты базы данных для предоставления специальных специальных скриптов ... Надеюсь, это поможет;) Наслаждайтесь потрясающим NHibenrate –

Смежные вопросы