【问题标题】:Unable to read connection string from Config File无法从配置文件中读取连接字符串
【发布时间】:2012-07-18 11:50:06
【问题描述】:

我的项目中有一个 app.config 文件,如下所示。

我有以下代码来读取连接字符串:

string connectionstring = ConfigurationManager.ConnectionStrings["LibraryReservationSystemEntities"].ConnectionString;

它显示如下所列的异常。

对象引用未设置为对象的实例。

我们如何纠正它?

注意:这是一个类库项目。我从另一个项目中复制了这个连接字符串,该项目有 EF 的 EMDX 文件。我目前的解决方案中只有一个项目。

注意:我需要从我的项目中实例化一个 ObjectContext (EF)。 EMDX 在不同的项目中可用。

<?xml version="1.0" encoding="utf-8" ?>
 <configuration>
<connectionStrings>
    <add name="LibraryReservationSystemEntities" connectionString="metadata=res://*/MyEDMtest.csdl|res://*/MyEDMtest.ssdl|res://*/MyEDMtest.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.;AttachDbFilename=C:\DevTEST\Databases\LibraryReservationSystem.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>
 </configuration>

参考

  1. How do I programmatically set the connection string for Entity-Framework Code-First?

  2. Best way to initialize an entity framework context?

【问题讨论】:

  • 您确定您使用的是正确的配置文件吗?
  • @flem 是的。我的项目中只有一个配置文件。
  • 它是什么类型的应用程序(winforms、控制台、类库等)?您的解决方案中只有一个项目吗?
  • 配置是否属于dll?
  • 这是一个类库项目。我从具有 EF 的 EMDX 文件的 anotehr 项目中复制了此连接字符串。我目前的解决方案中只有一个项目。

标签: c# .net


【解决方案1】:

您不能拥有库项目的配置文件。该配置文件与执行的程序集相关,可以是winform应用程序、WPF应用程序、控制台应用程序、IIS中的ASP.Net网站...

在实际执行的程序集的 app.config(或 web.config)文件中添加您的 ConnectionStrings 部分。

【讨论】:

  • 这是我的答案...(5分钟前)
  • @flem 抱歉,但在我写答案时,您的答案不完整。您稍后对其进行了编辑。
  • 当 EF 添加 EMDX 时,它会在其项目中添加一个配置文件。为什么会这样?我需要从我的项目中实例化一个 ObjectContext。 EMDX 在不同的项目中可用。
  • @Lijo 主要用于EDMX模型的“从DB更新”功能。它不代表将要使用的实际数据库。 ObjectContext 接受各种连接字符串格式作为输入。
  • 谢谢。我正在使用stackoverflow.com/questions/6003085/… 中提到的方法
【解决方案2】:

检查一下

you need to add a .dll reference for configuration manager

recheck if your connection string is right

check if you have more than one configuration file ex. web.config and app.config; so the ConfigurationManager is referencing the wrong file in the solution.

【讨论】:

    【解决方案3】:

    如果 ConnectionStrings["myConnection"] 返回 null,则在构造函数中取消引用以获取 Name 属性将失败。那肯定不是bug所在吗?

    为什么不在该行放置一个断点并查看 ConfigurationManager.ConnectionStrings 以检查它认为它有什么 - 并非常仔细地检查拼写错误。

    之后,在方法的第一行下一个断点,检查connectionString的值是什么。将 null 传递给 SqlConnection 构造函数实际上不会引发异常,但是当您尝试打开它时会得到 InvalidOperationException。

    【讨论】:

    • 我没有使用任何数据库连接。我只是想读取配置值。异常出现在此读取本身中。
    猜你喜欢
    • 2016-01-05
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多