0

我们有自定义代码,通过创建一些对象并将它们保存到 DatabaseContext 来擦除和初始化我们的测试数据库(我们将迁移用于模式,但不用于数据)。但是,我们的测试人员创建了更多数据,并且不想在我们进行干净部署时丢失她的测试数据。因此,我必须弄清楚如何将数据从 SQL Server 获取到 C#(一次性),所以它可以与我们的数据初始化程序一起运行。

我最初的方法是将数据手动复制粘贴到 C# 对象初始化程序中,但这很快就过时了,因为要复制 100 多行。

我的第二种方法是在 SQL Server 中使用 SELECT 语句创建对象,将 C# 初始化程序语法混合到 SQL SELECT 语句中,然后将 SQL Server 生成的 C# 字符串复制回 Visual Studio。

虽然第二种方法看起来不错,但我想知道是否有一个明显的解决方案(除了每次都简单地运行 SQL INSERT 脚本)我错过了。

4

3 回答 3

1

我最终采用了问题中提到的方法。在 SQL Select 语句中生成 C# 对象初始化程序。

我收集了一些东西,最明显的是:

  • CAST AS VARCHAR 用于所有数字字段(尽管如果您不这样做,SQL Server 会给出错误)。

  • 日期:转换为 VARCHAR 并用 DateTime.Parse() 包围

  • 使用 CASE 语句将 SQL 布尔值 (1/0) 转换为字符串形式的真/假。

  • 枚举:生成演员表。

  • 如果使用自动编号 ID,请记住在实例名称前面加上一个字母。初始化后将对象添加到 DataContext 中。

不要害怕在生成的代码中引用您的 C# 代码。无论如何,它都不会在 SQL Server 中运行。

于 2012-09-03T15:16:35.047 回答
0

我只想创建一个 SQL 脚本来重新创建数据库中的数据。
您可以通过命令行或通过 C# 运行此脚本...

于 2012-08-29T13:55:33.893 回答
0

你确实有另一个选择。备份测试数据库,将该备份加载到与目标数据库相同的服务器上的新数据库中,并在迁移完成时(包括清除数据库)发出跨数据库INSERT...SELECT语句。

这种方法的好处是,如果测试团队获得了他们喜欢的另一个版本,您可以进行备份并覆盖暂存数据库,从而允许他们不断构建更多数据。

于 2012-08-29T13:57:57.140 回答