C#SMO数据库不记录创建

Sco*_*y H 11 c# sql-server nunit smo nunit-console

我有一个集成测试,创建一个类型的数据库Microsoft.SqlServer.Management.Smo.Database:

var defaultConnectionConnectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString();
var sqlConnection = new SqlConnection(defaultConnectionConnectionString);
var serverConnection = new ServerConnection(sqlConnection);
 _server = new Server(serverConnection);
 _database = new Database(_server, _integrationTestingDatabaseName);
 _database.Create();
Run Code Online (Sandbox Code Playgroud)

当我通过CLI为NUnit运行集成测试时,测试完成后,用于创建数据库的SQL将被转储到控制台.这会使输出变得混乱,并且在运行此集成测试时不是我想要看到的.我怎么能阻止这种情况发生?

Jer*_*son 3

这是一种徒劳的行为,无法重现。

我猜可能存在一些混乱,也许你的一个脚本做了SQL Print这样的一个或一些转移注意力的事情。因为执行此单元测试通过 Sql 管理对象创建 SQL dB 不会输出SQL 创建脚本。

在此输入图像描述

即使直接从命令行执行也不会记录 SQL 创建脚本。这是重现:

using NUnit.Framework;
using ConsoleApplication1;
using System.IO;
using System.Diagnostics;

[TestFixture]
public class UnitTest1
{    
    static FileStream objStream;

    [SetUp]
    public static void Setup()
    {
        objStream = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "\\AAA_Output.txt", FileMode.OpenOrCreate);
        TextWriterTraceListener objTraceListener = new TextWriterTraceListener(objStream);
        Trace.Listeners.Add(objTraceListener);
        Trace.WriteLine("===================================");
        Trace.WriteLine("App Start:" + DateTime.Now);
        Trace.WriteLine("===================================");
    }

    [TestCase]
    public void TestMethod1()
    {
        Program.CreateDB();
    }

    [TearDown]
    public static void TearDown()
    {
        Trace.Flush();
        objStream.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述