【发布时间】:2014-03-18 14:44:45
【问题描述】:
我有一个包含多个项目的解决方案,例如类库、网站、服务等。
类库和服务等项目具有与同一数据库的 dbml 连接。这意味着项目具有连接字符串,例如:
MySolution.ClassLibrary.DatabaseA
MySolution.ClassLibrary.DatabaseB
MySolution.ClassLibrary.DatabaseC
MySolution.Service.DatabaseA
MySolution.Service.DatabaseD
这有点乱,因为我正在复制连接字符串。出于集成目的,我还添加了另一个共享组件类库——它也可以访问相同的数据库(不同的表)。所以我现在在某些地方有 3 个相同连接字符串的实例!
如前所述,这不仅很混乱,而且还存在漏洞,因为如果网站或服务中缺少连接字符串,它最终会尝试指向我们的开发数据库(因为它默认设置为来自类库)。
我真正想要的只是拥有一个非或通用命名空间版本的连接字符串,并在任何地方共享它,例如
MySolution.ConnectionStrings.DatabaseA
MySolution.ConnectionStrings.DatabaseB
MySolution.ConnectionStrings.DatabaseC
MySolution.ConnectionStrings.DatabaseD
然后我会将每个 dbml 指向这些连接字符串并完成工作!
问题在于 VS2012 在更改 dbml(右键单击 > 属性)中的连接字符串时出现问题。它在 app 或 web.configs 和 Settings.settings 之间混淆 - 通常在选择 DatabaseConnectingStringA 时,它会创建一个名为 DatabaseConnectionStringA1 的新的,这非常令人沮丧!当您通过项目设置添加它时,它也会始终将它自己的命名空间添加到连接字符串中 - 这是 dbml 所必需的。
有没有人有技巧或方法让 VS 做到这一点?
【问题讨论】:
-
最后,只有来自运行程序集的连接字符串很重要。其他的仅存储以了解您用于生成模型的数据库。因此,您只需确保正在运行的程序集本身不包含 DBML。
标签: linq visual-studio connection-string dbml