首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DbContext解耦

DbContext解耦
EN

Stack Overflow用户
提问于 2018-05-22 09:57:21
回答 2查看 551关注 0票数 2

我已经将与EF相关的代码放在类库中,并在asp.net webapi项目中使用它。然而,在我的webapi项目中,我仍然有以下代码。

代码语言:javascript
复制
services.AddDbContext<MyOwnDbContext>(
    ops => ops.UseSqlite(connection, optionsBuilder => optionsBuilder.MigrationsAssembly("MyProject.API")));

是否有方法将'MyOwnDbContext: DbContext‘类与webapi项目完全分离(使用工厂或接口)。还是这是不必要的担忧?我只是不想在两个项目中使用EF相关的库。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-22 10:26:15

这是一个不可忽视的问题。将其放入应用程序(Startup.cs)的根中。这里的一切都是硬连接的(依赖注入容器、上下文、日志记录、.)。

事实上,没有比这更好的地方了。因为上下文本身的配置与应用程序级别以下的任何层无关。DAL/存储库只需使用已经配置的上下文就可以了。

票数 0
EN

Stack Overflow用户

发布于 2018-05-22 10:14:53

我不会使用它,因为您仍然需要在entry项目中安装,这样库才能使用它(或者通过手动复制文件来破解整个过程,但我们不要进入这个问题)。

然而,这正是我在最近的一个项目中所做的,我希望将所有的服务都放在一个单独的地方,与Startup类不同:

  1. Microsoft.Extensions.DependencyInjection安装到希望使用DbContext的项目中。
  2. 添加如下内容: 公共静态类注入器{ //您可能希望在这里传递连接字符串或选项类,过于公开的静态IServiceCollection注入(此IServiceCollection服务){services.AddDbContext<...>(.);返回服务;}
  3. 注入它,而不是上下文本身: 公共空配置(IServiceCollection服务){ services.Inject();//和任何您需要的services.AddMvc();}

就像这样,你赢的不多,但你可以像我刚开始提到的那样继续前进。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50464805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档