不要以爲任何人都知道如何從nhibernate執行sql腳本。我有一個靜態數據,我需要一個數據庫,它包含在一個staticData.sql文件中。當我運行我的集成測試時,我使用schema export命令重新創建了數據庫,並且我需要運行這些數據。我意識到我可以使用.net,但是Id真的只想在我的數據訪問技術中使用一種項目...Nhibernate和sql腳本
感謝
不要以爲任何人都知道如何從nhibernate執行sql腳本。我有一個靜態數據,我需要一個數據庫,它包含在一個staticData.sql文件中。當我運行我的集成測試時,我使用schema export命令重新創建了數據庫,並且我需要運行這些數據。我意識到我可以使用.net,但是Id真的只想在我的數據訪問技術中使用一種項目...Nhibernate和sql腳本
感謝
沒有什麼錯用普通的ADO.NET將數據插入到在集成測試數據庫。對於批量插入,它甚至比NHibernate好。將數據庫置於已知狀態進行測試的方式並不重要,重要的是要測試您在應用程序中訪問數據的方式。
使用NHibernate.ISession.CreateSQLQuery(字符串的queryString)
private NHibernate.ISession session; // Initialized somewhere
public void ExecuteSQLFile(string sqlFilePath)
{
string sqlScript;
using (FileStream strm = File.OpenRead(sqlFilePath))
{
var reader = new StreamReader(strm);
sqlScript = reader.ReadToEnd();
}
var regex = new Regex("^GO", RegexOptions.IgnoreCase | RegexOptions.Multiline);
string[] lines = regex.Split(sqlScript);
foreach (string line in lines)
{
IQuery query = session.CreateSQLQuery(line);
query.ExecuteUpdate();
}
}
試試這裏是文檔:Chapter 16. Native SQL