c# - 为什么我的 ClickOnce 应用程序可能会尝试连接到 localdb?

标签 c# sql-server winforms entity-framework clickonce

我使用 C# 和 Entity Framework 构建了一个 WinForms 应用程序。数据全部在SQL Server中。我可以验证连接字符串是否正确引用该数据库并返回预期的数据。当我在 VS 中运行它时,甚至直接运行输出时,一切都正常。

当我将其部署为 ClickOnce 应用程序时,问题就出现了。突然间,我遇到了以下异常:

System.ArgumentException: Invalid value for key 'attachdbfilename'.

当我搜索此错误时,大多数结果似乎与 a) asp 应用程序和/或 b) 有关应用程序试图连接到不存在的 localdb 实例的事实。

我已经将问题本地化为数据上下文的初始化。不过调试起来有点困难,因为它在 VS 中运行良好。

就其值(value)而言,我的连接字符串设置为以下内容(在我的数据模型库项目和 winforms 项目的 App.Config 文件中):

<parameter value="Server=ARUK-SRV2;Data Source=ARUK-SRV2\ARUKSQL;Initial Catalog=TPS;Integrated Security=True" />

有人以前遇到过这个吗?有人有任何修复它的建议吗?

最佳答案

Sam Axe's comment建议搜索 Attachdbfilename。这导致了 0 个结果,但确实给了我一个想法。我搜索“localdb”并找到了三个匹配项 - 我的每个 App.Config 文件中都有一个匹配项。

虽然我已更改连接字符串以指向我们的 SQL Server 实例,但我仍将默认连接工厂设置为 LocalDbConnectionFactory。 (哦!)

大卫·奥类多 (David Obando) 有一个 blog post explaining what needs to be changed 。从本质上讲,这相当于改变

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">

谢谢指点!

关于c# - 为什么我的 ClickOnce 应用程序可能会尝试连接到 localdb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32243884/

相关文章:

c# - 表单加载时出现 datagridview 错误 : index was out of range exception

c# - 保护 Winform 页面的最佳方式?

c# - 弹性NEST返回不一致的结果

php - PK和FK表设计的混淆

sql - vb.net中使用oledb获取sql server print语句的值

sql-server - 声明标量变量存储过程

c# - 从.Hide() 改成.Show() 的窗体无法最大化,为什么?

c# - Umbraco 单元测试

c# - C# 中允许在 O(1) 中反转的数据结构

c# - 如何处理来自服务器和客户端的时区差异