使用N层应用程序。
有存储库层,服务层和表示层项目。
只有Repository Layer引用了实体框架。
只有表示层(web.config)具有配置字符串。
我使用IDbContextFactory
和依赖注入来注入配置
如何启用迁移它会出错
检查上下文是否以现有数据库为目标... System.ArgumentException:参数' nameOrConnectionString'不能为null,为空或仅包含空格。 System.Data.Entity.DckContext..se(String nameOrConnectionString)上的System.Data.Entity.Utilities.Check.NotEmpty(String value,String parameterName)
正如我所提到的,连接字符串(配置)是从表示层注入的,我使用的是Autofac for DI
以下是存储库层中使用的Context Factory
public class MyContextFactory : IDbContextFactory<MyContext>
{
public ILogger Logger { get; set; }
private readonly string _configuration;
public MyContextFactory(string configuration)
{
_configuration = configuration;
}
public MyContextFactory()
{
}
public MyContext Create()
{
var dbcontext =new MyContext(_configuration, Logger);
return dbcontext;
}
}
答案 0 :(得分:0)
使其正常工作答案是将连接字符串添加到存储库项目的app.config
中。 (只需从web.config
)
当您将迁移指向该项目时,我认为它不够聪明,无法知道在哪里查找连接字符串。