gpt4 book ai didi

c# - Entity Framework 无法在 Web.config 中找到连接字符串

转载 作者:可可西里 更新时间:2023-11-01 08:40:36 25 4
gpt4 key购买 nike

Entity Framework 似乎并没有真正从 Web.config 中读取连接字符串。

我开始了一个新项目并创建了一个上下文:

public class FooContext : DbContext
{
public FooContext() :
base("Foo")
{
}

// DbSets here
}

然后,我向项目 Web.config 添加了一个连接字符串:

<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="Foo" providerName="System.Data.SqlClient" connectionString="Data Source=Foo;Initial Catalog=Foo;Integrated Security=False;User Id=foo;Password=foo;MultipleActiveResultSets=True" />
</connectionStrings>
<appSettings>
...

我启用了迁移,生成了初始迁移,然后尝试更新数据库。过了一会儿,更新失败,说无法连接到数据库。所以我将我的项目 DLL 拉入 LINQPad 并运行以下命令:

var context = new FooContext();
context.Database.Connection.ConnectionString.Dump();

我得到以下输出:

Data Source=.\SQLEXPRESS;Initial Catalog=Foo;Integrated Security=True;MultipleActiveResultSets=True

它正在尝试连接到 LocalDB,完全忽略了我的连接字符串。因此,我尝试通过使用 "name=Foo" 而不仅仅是 "Foo" 来在上下文构造函数中更加明确。

public FooContext() :
base("name=Foo")
{
}

就其值(value)而言,我以前从未这样做过。我什至在同一个解决方案中有其他项目,我只是传递了连接字符串名称,它们一直运行良好。

我跳回到 LINQPad 并再次运行代码,现在我得到一个异常:

No connection string named 'Foo' could be found in the application config file.

我完全不知所措。我已经设置了 100 次这样的项目,但从未遇到过任何问题。由于它可能很重要,我正在运行最新的 Entity Framework 6.1.3。知道这里可能会发生什么吗?

最佳答案

我假设您在 Visual Studio 中运行它,请确保您将 Web 项目作为启动项目运行以使用 web.config。如果您正在运行另一个控制台或 .tests 项目作为启动,它将选择它们的 app.config 文件作为配置文件。

关于c# - Entity Framework 无法在 Web.config 中找到连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29776232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com