Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.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# 使用多个app.config文件单击一次_C#_Sql_Wpf_Entity Framework_Azure Sql Database - Fatal编程技术网

C# 使用多个app.config文件单击一次

C# 使用多个app.config文件单击一次,c#,sql,wpf,entity-framework,azure-sql-database,C#,Sql,Wpf,Entity Framework,Azure Sql Database,我们正接近这样一种情况:我们将有多个用户使用我们的应用程序,每个用户都有自己版本的SQL数据库(在Azure中)。它们的应用程序版本相同,数据库不同。每个数据库的结构对于所有用户都是相同的,但它们有自己的版本 到目前为止,我在使用ClickOnce方面取得了一些成功,并希望继续使用它向所有用户发布应用程序的更新 我在C#中使用实体框架,它生成自己的连接字符串,该字符串存储在我的app.config文件中。这就是我的问题所在 如何使用每个用户自己的数据库将更新分发给每个用户,而不覆盖他们自己的ap

我们正接近这样一种情况:我们将有多个用户使用我们的应用程序,每个用户都有自己版本的SQL数据库(在Azure中)。它们的应用程序版本相同,数据库不同。每个数据库的结构对于所有用户都是相同的,但它们有自己的版本

到目前为止,我在使用ClickOnce方面取得了一些成功,并希望继续使用它向所有用户发布应用程序的更新

我在C#中使用实体框架,它生成自己的连接字符串,该字符串存储在我的
app.config
文件中。这就是我的问题所在

如何使用每个用户自己的数据库将更新分发给每个用户,而不覆盖他们自己的
app.config
文件,从而将连接字符串指向不同(错误)的数据库

我曾经想到的一个解决方案是不将实体框架连接字符串存储在
app.config
文件中,而是使用一个SQLlite数据库的本地副本来替换该字符串。然而,我将不得不在每个用户的PC上安装这个,这将是非常耗时的


因此,我正在寻找一种解决方案,在该解决方案中,我可以使用相同的应用程序代码,通过ClickOnce更新不同的SQL数据库,而无需更改为该用户存储连接字符串的位置。

一个选项是将连接字符串存储在公共中心位置,例如网络驱动器,应用程序根据某些参数(例如当前用户的用户名)连接并检索特定于用户的设置

另一个选项是为已经包含特定连接字符串的每个特定用户发布单独的输出包(应用程序)


第三种选择可能是使用应用程序本身附带的本地嵌入式数据库。

如果要使用EF,请避免由于性能不佳而将TransactionHandler用于SQL Azure数据库。如果您在项目期间发现更多性能问题,请让我知道并报告

考虑为客户数据库使用弹性池,并使用弹性作业轻松地将更新应用于所有这些数据库。你可以了解更多


希望这能有所帮助。

@mm8如何通过使用ClickOnce实现这一点?当程序更新时,它是否会替换唯一的
app.config
?为每个用户构建一个单独的clickonce包。@BensaysNoTopoliticSo Hi Ben您是否有关于如何为每个用户创建单独包的链接?这与部署不同的应用程序相同……第一个选项的唯一问题是用户位于不同的地理位置,因此他们将无法访问相同的网络驱动器。如果我使用不同的输出包,我是否需要相同代码的多个实例?很明显,我只想维护一组代码。因此,用远程数据库或服务替换文件驱动器并查询此文件。好的,如果我将一个SQLLite数据库(其中只有一个连接字符串)发送到每个用户的PC,那么让Entity Framework检索并使用数据库中的连接字符串而不是它生成的一个?您可以将任何想要的连接字符串传递给您的上下文类: