【问题标题】:Update-Database Always updating in .\SQLEXPRESS, in Entity Framework更新数据库始终在 .\SQLEXPRESS 中更新,在实体框架中
【发布时间】:2016-03-24 00:05:42
【问题描述】:

我有一个解决方案项目,其中我在类库项目中实现了实体框架。 我在同一个类库中有一个 App.config 文件,在该类库中我将连接字符串作为

<connectionStrings>
<add name="DefaultConnection"
        connectionString="Data Source=DDC5-D-4R03T72;Initial Catalog=ServiceAdaptor;User ID=sa;Password=pwd;MultipleActiveResultSets=True;Integrated Security=False"

      providerName="System.Data.SqlClient"/>
 </connectionStrings>

(我使用的是 Visual Studio 2010,并且我使用的是 Code-First Approach EF)

现在的问题是当我运行命令“Update-Database -Verbose”时, 它不是在上面的 DB 中创建表,而是在 .\SQLExpress 中创建的,我在我的解决方案中的任何地方都没有提到)

当我下达命令时

Update-Database -Verbose -ConnectionStringName "DefaultConnection"

它给了我消息

"找不到名为 'DefaultConnection' 的连接字符串 应用程序配置文件。”

我的结论是我的 Update-Database 命令无法从配置文件中获取连接字符串。

想不通,怎么回事。

【问题讨论】:

    标签: c# asp.net asp.net-mvc entity-framework


    【解决方案1】:

    最后我找到了解决方案,这里的问题是 Update-database 命令以某种方式在 Web.Config 文件中搜索连接字符串,而不是在 App.Config 文件中,因为在我的案例中,我有具有 App.config 文件的类库项目。

    因为它没有得到连接字符串默认情况下,VS 10 中的 EF 框架将假定 .\SQLEXPRESS 作为默认数据库并在那里创建表。

    所以我找到的解决方案是:

    1) 在项目中添加引用System.Configuration

    2) 在 dbContext 中使用 base("DefaultConnection"),如下所示

    base(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString)

    【讨论】:

    • 所以你的连接字符串在你的启动项目中,对我来说听起来好像我是对的......
    • 感谢亚历克斯的快速努力,但事实并非如你所说的那样。问题不在于启动项目配置文件。它在同一个类库项目中,我的上下文在其中实现.问题是类库项目具有更新数据库命令未识别的连接字符串。我们需要进行一些更改才能从 App.config 中获取它。如果是 web.config,它可以正常工作,没有任何问题。
    猜你喜欢
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多