ClickOnce With Multiple app.config Files

时间:2017-09-25 08:05:29

标签: c# sql wpf entity-framework azure-sql-database

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

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

我在C#中使用Entity Framework,它会生成自己的连接字符串,该字符串存储在我的app.config文件中。这是我有问题的地方。

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

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

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

2 个答案:

答案 0 :(得分:1)

一种选择是将连接字符串存储在公共中心位置,例如网络驱动器,应用程序连接到该公共中心位置并基于某些参数检索用户特定设置,例如用户名。当前用户。

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

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

答案 1 :(得分:0)

如果您将使用EF,请避免因为性能不佳而将TransactionHandler与SQL Azure数据库一起使用。如果您在项目中发现更多性能问题,请告知我们进行报告。

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

希望这有帮助。