gpt4 book ai didi

c# - EntityFramework 在 App.config 中看不到 ConnectionString

转载 作者:太空狗 更新时间:2023-10-29 18:13:33 24 4
gpt4 key购买 nike

我正在学习 Code First EntityFramework 和 ASP.Net MVC 3。起初,我的普通 EFDbContext 类被放置在 Concrete 文件夹中的 WebUI mvc 项目中。

 public class EFDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
}

它被消耗掉了

 public class EFProductRepository : IProductRepository
{
private EFDbContext context = new EFDbContext();

public IQueryable<Product> Products
{
get
{
return context.Products;
}
}
}

在哪里

public interface IProductRepository
{
IQueryable<Product> Products { get; }
}

所以我在根 Web.config 中添加了以下代码:

 <connectionStrings>
<add name="WebUI.Concrete.EFDbContext" connectionString="Data Source=HORGH\SQLSERVER2008;Initial Catalog=SportStore;Integrated Security=True;Pooling=False"
providerName="System.Data.SqlClient"/>
</connectionStrings>

并且有效

然后我决定把它放到一个单独的 Domain 类库项目中。我有一个 App.config 文件。所以我决定将我的连接字符串移到那里,它变成了:

<connectionStrings>
<add name="Domain.Concrete.EFDbContext" connectionString="Data Source=HORGH\SQLSERVER2008;Initial Catalog=SportStore;Integrated Security=True;Pooling=False"
providerName="System.Data.SqlClient"/>
</connectionStrings>

但最终 EF 不再看到它

EFProductRepositoryEFDbContext 移动到 Domain 项目及其根文件夹 Concrete。所以调用构造函数的代码在 EFProductRepository 中,即在 Domain 项目中。

我尝试将 App.config 重命名为 Web.Config;试图将连接字符串返回到 WebUI 项目的 Web.config。它也不起作用。

我做错了什么?

最佳答案

类库项目App.config 文件不要混合。

应用程序的配置文件始终与可执行文件相关联,或者在 web.config 的情况下,与网站相关联。

您的 DLL 项目不能(也不应该)有自己的配置文件*。

相反,配置连接字符串以及您的 WebUI 项目。您可以有多个连接字符串条目。

*实际上有一些方法可以使您的 DLL 实际上拥有自己的配置文件。例如,NLog 就是这样做的。然而,这很少是个好主意。

关于c# - EntityFramework 在 App.config 中看不到 ConnectionString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12032720/

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