【发布时间】:2012-10-30 18:49:54
【问题描述】:
在 C# 2008 应用程序中,我使用 linq to SQL 连接到 SQL Server 2008 数据库。现在我想从 app.config 文件中获取数据库的连接,而不是将值硬编码到应用程序中。我希望能够更改与数据库的连接字符串,因为我将把这个应用程序从单元测试数据库移动到用户接受数据库再到生产数据库。
现在我收到错误消息““对象引用未设置为对象的实例。”我知道此错误消息来自我在下面列出的代码行,因为它是唯一的代码行我变了。
以下是 *.designer.cs 文件中代码的 sn-p(这是 dbml 文件的一部分)。
using System.Configuration;
public esampleDataContext() :
base(ConfigurationManager.ConnectionStrings["sample.Properties.Settings.DEVConnectionString"].ConnectionString,mappingSource)
**注意:base(global::sample.Properties.Settings.Default.DEVConnectionString, mappingSource) 是我替换的由 .NET 框架生成的代码行
我想提以下几点:
- *.dbml 文件与特定项目文件相关联。
- 此 *.dbml 文件的连接字符串设置如下:
- DEVConnectionString(设置)
- 连接字符串=数据源=dev1;初始目录=DEV_test;集成安全=True
- 应用程序设置=True
- 设置属性名称为 DEVConnectionString。
- 具有 *.dbml 文件的项目文件。具有对 system.configuration 的引用集。
**注意:此代码在我编写的类似应用程序中,但我不知道为什么它在这里不起作用。
因此,您能否告诉我,在代码中显示我,和/或指向我可以使用的参考,以便我可以在 app.config 文件中获取我想要使用的数据库连接字符串的值。我不想对数据库使用硬编码的连接字符串。
【问题讨论】:
-
您在 app.config 中的连接字符串是否名为
sample.Properties.Settings.DEVConnectionString?如果没有,这就是它失败的原因,因为它在字典中找不到它并返回 null/ -
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
如果我将 app.config 文件设置为以下内容,是否可以:
这里的providerName 是否引起了某种问题?您能否通过“如果不是,这就是它失败的原因,因为它在字典中找不到它并返回 null/”来解释更多您的意思?我不完全明白你指的是什么。
标签: visual-studio-2008 linq-to-sql sql-server-2008-r2 c#-3.0 app-config