是否有可能從nHibernate生成數據庫的模式,其中我已經向數據庫提供了nHibernate的配置,但是我沒有編寫任何映射。使用nHibernate檢索數據庫模式
我希望以編程方式獲取數據庫元數據/架構。
我正在使用Oracle數據庫。我曾嘗試兩種方法:
方法之一:
public DatabaseMetadata GetMetadata(DbConnection connectionIn)
{
return new DatabaseMetadata(connectionIn, _dialect);
}
問題:這似乎是不過我需要什麼,儘管它正確連接時,它並沒有回升的的任何我的桌子。我所提供的全部是nHibernate配置對象,其中填充了我的nHibernate.xml.config文件(連接字符串,驅動程序客戶端等)的內容。
問題:爲什麼它不返回表數據?它連接正確,但什麼都沒發現!
方法二:
public void DatabaseSchema()
{
var schema = new SchemaExport(nHibernateConfiguration);
schema.SetOutputFile("schema.dll");
schema.Create(true, true);
}
nHibernateConfiguration是NHibernate的配置對象,填充來自nHibernate.xml.config類內容的一個實例(在類的屬性)。
問題:這根本行不通。崩潰,但以下情況除外:
NHibernate.MappingException:方言 不支持身份密鑰 代
我懷疑這隻會基於映射你已經創建了一個模式?我沒有創建映射。這個想法是針對我連接到的任何數據庫生成一個模式。
問題:我相信這種方法只會根據我的映射生成一個Schema嗎?如果沒有,我是否正確使用它?
希望這已經夠清楚了,如果我需要提供更多信息,請發表評論。
在此先感謝。
要清楚:我有一個數據庫,並希望獲取代表數據庫的元數據,一個模式。
如果他的數據庫只有少數幾個字段,我會同意手動映射所有內容。否則,抓住一個工具,至少生成正確的成員名稱和映射。由於大多數工具似乎都有產生FK的問題(或者他的數據庫可能不會使用它們,如果它是遺留的)和關係類型,他可能只需要手動設置它們。 – Mike 2010-08-24 12:25:00
乾杯。這有助於回到我遇到的問題的底部。 – Damien 2010-08-25 11:29:04
llbgen是一個具有自動創建映射功能的程序:) – harry180 2012-10-11 08:53:35