2010-02-22 66 views
0

我正在研究一個asp.net業務應用程序並使用nhibernate。我使用nhibernate的目標是最大限度地減少/避免在不同數據庫(Oracle,SQL Server,Postgres等)上的應用程序移植工作。nhibernate中的備用數據庫模式查詢

我有一個場景,我必須動態檢查數據庫表模式並在其上構建一些功能。首先想到的是創建存儲過程並將其移植到不同的數據庫上。我的存儲過程是這樣的......


SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = (
    SELECT MasterTableName FROM SystemDocument WHERE DocId = @vDocumentID 
) 

現在我這裏有2個問題...

1是否有NHibernate的任何替代,避免存儲過程來實現這一點?

2 - 如果第一個問題的答案是NO :(那我該怎麼填一個DTO/POCO可以包含在列及其類型的表,而不與NHibernate映射呢?

我將很感謝您對此的建議。

感謝, 阿西夫

回答

0

您可以使用常規的SQL和項目,到DTO對象。我會使用一個命名查詢,以便它會更容易改變。我不t知道是否有方法根據當前使用的方言自動映射這些命名查詢。

+0

感謝您的答案,但如果我使用命名查詢,它不會是可移植的SQL Server以外的數據庫。有沒有什麼解決方法? – ak1 2010-02-22 15:05:37

+0

是的,這是問題所在。我以前從來沒有真正處理過這個問題,但我想你需要爲每種方言使用這個查詢的多個版本。因此,具有相同命名查詢的多個hbm.xml文件只是不同的實現。然後,你必須記住根據方言使用正確的一個。 – dotjoe 2010-02-22 15:12:50