Nhibernate和sql脚本

use*_*836 5 nhibernate

不要以为任何人都知道如何从nhibernate执行sql脚本.我在staticData.sql文件中包含的数据库中需要一些静态数据.当我运行集成测试时,我使用schema export命令重新创建数据库,我需要运行这些数据.我意识到我可以使用.net来获取它,但我真的只想在我的网络中使用一种数据访问技术项目...

谢谢

Lar*_*ard 13

尝试使用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();
        }
    }
Run Code Online (Sandbox Code Playgroud)

以下是文档:第16章.本机SQL


Dar*_*rov 4

在集成测试中使用普通的 ADO.NET 将数据插入数据库没有任何问题。对于批量插入,它甚至比 NHibernate 更好。将数据库置于已知状态进行测试的方式并不重要,重要的是测试在应用程序中访问数据的方式。