9

我正在与 ASP.Net MVC 3 一起学习 Code First EntityFramework。起初我的琐碎EFDbContext类被放在WebUImvc 项目的一个Concrete文件夹中。

 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 不再看到它

EFProductRepository并使用其根文件夹EFDbContext移至项目。所以调用构造函数的代码在,即在项目中。DomainConcreteEFProductRepositoryDomain

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

我究竟做错了什么?

4

2 回答 2

20

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

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

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

而是将连接字符串与您的 WebUI 项目一起配置。您可以有多个连接字符串条目。

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

于 2012-08-20T05:44:37.323 回答
-1

不使用连接字符串名称namespace

<connectionStrings>
    <add name="EFDbContext" connectionString="Data Source=HORGH\SQLSERVER2008;Initial Catalog=SportStore;Integrated Security=True;Pooling=False"
providerName="System.Data.SqlClient"/>
</connectionStrings>
于 2012-08-20T06:52:43.050 回答