Nhibernate和sql脚本
不要以为有人知道如何从nhibernate执行sql脚本。我在数据库中得到了一些我需要的静态数据,这些数据包含在staticData.sql文件中。当我运行集成测试时,我使用schema export命令重新创建数据库,我需要在中运行此数据。我意识到我可以在使用.net时获得它,但我真的希望在我的项目中只有一种数据访问技术Nhibernate和sql脚本,nhibernate,Nhibernate,不要以为有人知道如何从nhibernate执行sql脚本。我在数据库中得到了一些我需要的静态数据,这些数据包含在staticData.sql文件中。当我运行集成测试时,我使用schema export命令重新创建数据库,我需要在中运行此数据。我意识到我可以在使用.net时获得它,但我真的希望在我的项目中只有一种数据访问技术 谢谢在集成测试中,使用普通ADO.NET将数据插入数据库没有问题。对于批量插入,它甚至比NHibernate更好。将数据库置于已知状态以进行测试的方式并不重要,重要的是测试在
谢谢在集成测试中,使用普通ADO.NET将数据插入数据库没有问题。对于批量插入,它甚至比NHibernate更好。将数据库置于已知状态以进行测试的方式并不重要,重要的是测试在应用程序中访问数据的方式。尝试使用NHibernate.ISession.CreateSQLQuery(string 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();
}
}