如何在Visual Studio中创建测试数据库?

时间:2015-04-01 22:40:29

标签: c# database visual-studio visual-studio-2013 localdb

我们有一个学校项目,我们必须在其中创建一个Web应用程序。我们可以访问在线数据库,但问题是我们必须先通过VPN连接才能连接到它。

出于这个原因,我们正在寻找一种可能性,我们可以使用本地数据库(我想在项目中)?我们都可以使用(该项目位于subversion服务器上)。但是当我们在部署服务器上部署项目时,我们希望它使用真正的数据库连接。

我想我以前见过它,但经过几个小时的搜索,我找不到任何相关内容。

这可能吗?

编辑:

我们将MVC5与实体框架一起使用。

3 个答案:

答案 0 :(得分:5)

人们通常会根据您想要达到的目标,采取多种方式之一。

  • 将数据库作为mdf文件下拉并将其存储在您的存储库中。然后,您可以在安装过程中进行手动步骤,要求人们将其导入到数据库中(我建议使用localdb进行本地开发,但可以肯定,您可以使用sql server或其他东西)。
    • 优点:为安排此事的人设置非常简单。
    • 缺点:对于初学者来说,手动步骤很难。如果数据库很大,它将使您的存储库膨胀。如果一个开发人员更改了数据库(例如通过添加列),则必须让每个人都知道要清除他们的副本并从备份中恢复。此外,没有关于数据库如何更改以及您的测试数据库未与您必须执行的部署集成的真实显式历史记录。
  • 将数据库作为mdf文件下拉。在项目中包含此文件,并将其设置为Content / Copy if Newer。然后使用连接字符串直接使用attachDb,例如Server=(localdb)\v11.0;AttachDbFilename=.\MyDataFile.mdf;Database=dbname;
    • 优点:没有手动步骤,一切正常
    • 缺点:显然,您希望使用AttachDbFilename的相对路径,并且我不支持100%。此外,与上面相同,但不必让每个人都知道他们的数据库需要恢复时,它只是在幕后恢复。这可能意味着用户突然看到他们的数据消失而没有通知。它有时也会失败,因为像锁定的数据库文件这样的东西,每个人都必须善于注意这一点。
  • 维护一个可以在localdb中重新创建数据库的sql脚本。为人们提供PowerShell或批处理脚本(也在源代码管理中)以便轻松运行它。 (可选)使用构建后脚本来确定是否需要重新创建数据库并运行它。
    • 优点:一切都非常明确。存储库中的合理小尺寸(应该能够有效地存储文本)。您可以使用相同的脚本作为部署的一部分。
    • 缺点:需要更多工作才能设置。仍然没有真正的方法来部署对现有数据库的更改
  • 首先使用实体​​框架数据库。在这样做时,我无法正确说出过程看起来是什么,但我知道这是可能的。
    • 优点:我猜。
    • 缺点:首先是Ewwww EF数据库
  • 首先使用实体​​框架代码迁移。使用显式迁移(不是愚蠢的auto-generate-my-whole-db cruft)并编写适当的Seed方法来填充数据。
    • 优点:这是专业开发人员所做的,并且基于Rails,Django和许多其他框架经常使用的测试模式。它非常灵活和明确,支持更改现有数据库。
    • 缺点:如果您没有经验,尤其是如果您不了解迁移模式,则可能很难设置。有一些命名困难使得谷歌很难(数据库第一次EF与代码优先EF,显式迁移与自动生成数据库,几种不同的种子方法依赖于你的初始化程序)。

答案 1 :(得分:1)

您可以使用Entity Framework创建本地数据库,该数据库将数据库文件保存在本地文件系统上,您可以将其推送到版本控制服务器以与同事共享。如果您决定部署数据库,则可以generate an sql script在生产数据库上运行。您可以使用SQL Management Studio连接到本地数据库。您只需要在部署后修改已发布应用程序的连接字符串。

答案 2 :(得分:0)

您以前可以使用Sql Server Express,但它已更改为LocalDB,可以在本地安装和运行。

http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx

https://msdn.microsoft.com/en-us/library/ms233763.aspx