不要以为任何人都知道如何从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