Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nhibernate和sql脚本_Nhibernate - Fatal编程技术网

Nhibernate和sql脚本

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

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


谢谢

在集成测试中,使用普通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();
        }
    }