添加localdb以进行测试

2 c# ef-code-first sql-server-2012 localdb entity-framework-6

我首先使用实体​​框架6代码.

目前我有一个生产数据库.我想为测试添加一个不同的数据库.我怎么做?

我的测试项目中是否需要另一个连接字符串?

两个连接字符串之间应该有什么区别?

我尝试复制连接字符串并更改目录名称,但它导致映射到同一数据库.

请帮我理解连接字符串的每个部分

谢谢

Mar*_*tin 7

在本地测试环境中使用本地db

您可以将localdb用于测试环境.Localdb是本地开发系统上基于文件的数据库,它不需要运行服务器,但从应用程序的角度来看,其行为类似于SQL Server.

我可以描述我将在Visual Studio 2013中执行的步骤:

  • 打开"SQL Server对象资源管理器"窗口
  • 展开以(localdb)v.11.0开头的条目
  • 右键单击"数据库",然后从上下文菜单中单击"添加新数据库"
  • 在我的系统上,这将mdf在我的用户文件夹中创建一个localdb(文件),例如C:\Users\USERNAME\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\v11.0
  • 创建数据库后,您可以使用脚本在localdb中创建与您的实时环境匹配的表.例如,您可以使用SQL Server Management Studio导出表结构(数据库 - >任务 - >生成脚本)
  • 获取连接字符串:打开数据库的上下文菜单(仍在Visual Studio SQL Server对象资源管理器中),然后选择"属性".
  • 在属性Windows中,找到"连接字符串"属性并复制其值.例:Data Source=(localdb)\v11.0;Initial Catalog=DATABASENAME;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False
  • 使用此连接字符串在connectionStrings元素中的web.config或app.config中创建新的连接字符串.将值放在connectionString属性中.不要更改providerName属性.

     <connectionStrings>
       <add name="ConnectionName" connectionString="..." providerName="System.Data.SqlClient" />    
    </connectionStrings>
    
    Run Code Online (Sandbox Code Playgroud)
  • 在DbContext派生类中使用该连接字符串名称:

    public class YourDbContext : DbContext
    {
        public YourDbContext() : base("ConnectionName")
        {        
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)