Я изучаю Code First EntityFramework вместе с ASP.Net MVC 3. Сначала мой тривиальный класс EFDbContext
был помещен в проект WebUI
mvc в папку 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
Class Library. Там у меня есть файл 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>
Но в конце концов Э.Ф. перестал его видеть .
EFProductRepository
и EFDbContext
переместились в проект Domain
со своей корневой папкой Concrete
. Таким образом, код, вызывающий конструктор, находится в проекте EFProductRepository
, т.е. в проекте Domain
.
Я попытался переименовать App.config в Web.Config; попытался вернуть строку подключения обратно в Web.config проекта WebUI
. Это тоже не работает.
Что я делаю не так?