Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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
C# 如何在单个项目中使用2个不同的连接字符串?_C#_Sql Server_Entity Framework_Visual Studio - Fatal编程技术网

C# 如何在单个项目中使用2个不同的连接字符串?

C# 如何在单个项目中使用2个不同的连接字符串?,c#,sql-server,entity-framework,visual-studio,C#,Sql Server,Entity Framework,Visual Studio,我们有一个场景,其中有两个SQL Server数据库,一个用于测试,一个用于部署。当我进入这个项目时,他们一直在使用类型化数据集并传递连接字符串来确定哪个数据库。两者只有一个类型化数据集 现在,我正试图用实体框架来实现这一点。虽然我可以在同一个类库中有两个EDMX模型,但问题是两个数据库都有相同的表,因此生成具有相同名称的相同C#类,并且存在冲突 是否仍有处理此场景的方法?您要做的一件事是将webconfig文件设置为在发布或发布时指向生产数据库服务器 如果您正在调试它,那么它将指向您的开发SQ

我们有一个场景,其中有两个SQL Server数据库,一个用于测试,一个用于部署。当我进入这个项目时,他们一直在使用类型化数据集并传递连接字符串来确定哪个数据库。两者只有一个类型化数据集

现在,我正试图用实体框架来实现这一点。虽然我可以在同一个类库中有两个EDMX模型,但问题是两个数据库都有相同的表,因此生成具有相同名称的相同C#类,并且存在冲突


是否仍有处理此场景的方法?

您要做的一件事是将
webconfig
文件设置为在发布或发布时指向生产数据库服务器

如果您正在调试它,那么它将指向您的开发SQL server

设置非常简单,
webconfig
文件包含
web.Release.config
web.Debug.config
,在这里可以设置它来替换连接字符串




在您的情况下,您将放置replace属性。

您要做的一件事是设置
webconfig
文件,以便在将其设置为发布或发布时指向生产数据库服务器

如果您正在调试它,那么它将指向您的开发SQL server

设置非常简单,
webconfig
文件包含
web.Release.config
web.Debug.config
,在这里可以设置它来替换连接字符串




在您的情况下,您将放置replace属性。

您可以获取以连接字符串为参数的模型派生的重载版本

您可以获取以连接字符串为参数的模型派生的重载版本

对于我来说,以下关于使用包含名称runner的gitlab ci

public static string GetConnectionString(IConfiguration configuration)
        {
            if (Environment.MachineName.Contains("runner"))
            {
                return configuration.GetConnectionString("DatabasePipeline");
            }
            return configuration.GetConnectionString("DatabaseLocal");
        }

对于我来说,关于使用包含名称runner的gitlab ci,以下内容已经足够了

public static string GetConnectionString(IConfiguration configuration)
        {
            if (Environment.MachineName.Contains("runner"))
            {
                return configuration.GetConnectionString("DatabasePipeline");
            }
            return configuration.GetConnectionString("DatabaseLocal");
        }


更改web.config中的引用有什么不对?但是它会生成一个连接字符串,其中包含我正在使用的模型中的元数据。我可以切换一下它指向什么吗?我没有web.config。对于模型所在的类库,我有一个App.config。那么,我该如何区分呢?如果我有Prod数据库的连接字符串RREM_GilbaneEntities3,我该怎么办?创建一个RREM_GilbanEntities3Debug并将其指向调试数据库,或者只是切换数据库或第一个连接字符串?更改web.config中的引用有什么问题?但它会生成一个连接字符串,其中包含我使用的模型中的元数据。我可以切换一下它指向什么吗?我没有web.config。对于模型所在的类库,我有一个App.config。那么,我该如何区分呢?如果我有Prod数据库的连接字符串RREM_GilbaneEntities3,我该怎么办?请创建一个RREM_GilbanEntities3Debug并将其指向调试数据库,或者只是切换数据库或第一个连接字符串?这是最好的做法!没有理由在一个实例中同时使用这两个上下文。但是我有一个来自模型的连接字符串,其格式为@user2471435。它的工作方式与EDMX文件使用连接字符串的方式相同。不过,我没有web配置文件。我有一个EF的类库model@user2471435您从某处获取了此连接字符串,您可以在DLL项目中执行此操作。这是执行此操作的最佳实践方式!没有理由在一个实例中同时使用这两个上下文。但是我有一个来自模型的连接字符串,其格式为@user2471435。它的工作方式与EDMX文件使用连接字符串的方式相同。不过,我没有web配置文件。我有一个EF的类库model@user2471435您从某处获取了此连接字符串,可以在DLL项目中执行此操作