0
我想學習nhibernate。我知道如何創建表和實體圖。但是我無法理解的是如何使用nHibernate創建一個新的Schema。NHibernate定義架構名稱
我搜索並發現使用「ExposeConfiguration」可以創建一個Schema,但我無法理解我在哪裏提供新的Schema名稱。
我想學習nhibernate。我知道如何創建表和實體圖。但是我無法理解的是如何使用nHibernate創建一個新的Schema。NHibernate定義架構名稱
我搜索並發現使用「ExposeConfiguration」可以創建一個Schema,但我無法理解我在哪裏提供新的Schema名稱。
有很清晰的文檔:
因此,架構名稱可以基本設置前每個類/表:
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);
}
EXTEND:如何創建模式本身? (例如mySchemaName
)
隨着HBM我們可以引入這個嵌入資源:
<?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>
如果該腳本將被納入流利配置爲先,它會爲我們創造的模式:
架構(「mySchema」);這個聲明是否告訴這個表屬於這個Scehma(但是模式應該已經存在於DB中)。據我所知,這個語句不會在數據庫中創建一個新的模式。對 ? – Sumit 2014-12-04 06:19:57
我明白了......現在你的意思是......我不記得我是如何解決這個問題的。 – 2014-12-04 06:20:59
我發現。我們可以使用特殊的數據庫對象來提供一些特殊的自定義腳本...希望這會有所幫助;)享受令人驚歎的NHibenrate – 2014-12-04 07:43:01