在“应用程序设置”中将实体框架连接字符串添加为变量

时间:2014-08-07 13:48:02

标签: c# entity-framework-5 connection-string application-settings

我的app.config文件中有这个自动生成的连接字符串。这是通过在Entity Framework中创建数据库优先模型来生成的:

<add name="HalloweenContext" connectionString="metadata=res://*/HalloweenDbModel.csdl|
                                                    res://*/HalloweenDbModel.ssdl|
                                                    res://*/HalloweenDbModel.msl;
                         provider=System.Data.SqlClient;
                         provider connection string=&quot;
                         data source=localhost\sqlexpress;
                         initial catalog=Halloween;
                         integrated security=True;
                         MultipleActiveResultSets=True;
                         App=EntityFramework&quot;"
 providerName="System.Data.EntityClient" />

我已被指示接受该连接字符串并将其放入应用程序设置中(图像用于说明应用程序设置页面):

enter image description here

我已经将此部分剪切/粘贴到名为“HalloweenContext”的设置变量中,并将&quote;更改为单引号:

"metadata=res://*/HalloweenDbModel.csdl|
          res://*/HalloweenDbModel.ssdl|
          res://*/HalloweenDbModel.msl;
          provider=System.Data.SqlClient;
          provider connection string=';
          data source=localhost\sqlexpress;
          initial catalog=Halloween;
          integrated security=True;
          MultipleActiveResultSets=True;
          App=EntityFramework';"
 providerName="System.Data.EntityClient"

但是,当我将上面的选择粘贴到HallowContext的应用程序设置变量中时,我收到以下错误消息:

enter image description here

我已经检查了连接字符串并重新检查了它,但我无法弄清楚它有什么问题。我删除了引号,添加了引号等等,但似乎没有什么对我有用。

我想知道,或许,因为这是一个EF连接字符串,我是否错误地将它放入应用程序设置中?

更新:使用下面答案中概述的新数据连接字符串后,我现在收到一个新错误:

  

在Code First模式中使用上下文,其中包含从EDMX文件生成的用于Database First或Model First开发的代码。这将无法正常工作。要解决此问题,请不要删除引发此异常的代码行。如果您希望使用Database First或Model First,请确保Entity Framework连接字符串包含在启动项目的app.config或web.config中。如果您要创建自己的DbConnection ......

所以,我认为我可能无法使用此上下文代替我的db-first上下文。但是,我似乎也无法使用我的db-first上下文,所以我处于停滞状态。我会一直在寻找解决方案,而且我非常感谢到目前为止给予的帮助。

作为补充说明,我将重申原始连接字符串正常工作并位于app.config文件中。但是,我已被指示将其添加到应用程序设置中。就个人而言,我觉得如果它在app.config文件中工作,那就足够了,但是我们已经被指示通过将连接字符串添加到应用程序设置并使用它connectionString = Settings.Default.HaloweenContext来使用连接字符串。最终目标是在我们可以使用的应用程序设置中设置许多连接字符串。

SIDE注意:我相信在app.config文件中使用多个命名连接字符串是可行的方法。将这些连接字符串添加为应用程序设置是否有任何优势,而不是仅仅手动将它们添加到app.config文件中?

1 个答案:

答案 0 :(得分:4)

这不是ADO.NET连接字符串,看起来像EF字符串

这是您想要的conn字符串:

"data source=localhost\sqlexpress; initial catalog=Halloween; integrated security=True;MultipleActiveResultSets=True;"