dotnetcore / osharp

OSharp是一个基于.Net6.0的快速开发框架,框架对 AspNetCore 的配置、依赖注入、日志、缓存、实体框架、Mvc(WebApi)、身份认证、功能权限、数据权限等模块进行更高一级的自动化封装,并规范了一套业务实现的代码结构与操作流程,使 .Net 框架更易于应用到实际项目开发中。
Apache License 2.0
2.76k stars 748 forks source link

OSharp可以替换DefaultDbContext为自定义DbContext吗 #284

Closed xuejmnet closed 2 years ago

xuejmnet commented 2 years ago

您的功能请求与现有问题有关吗?请描述

OSharp可以替换DefaultDbContext为自定义DbContext吗?我这边修改了自定义appsetting下的类,新建了自定义dbcontext继承dbcontextbase,然后初始化后续还是有提示未注册DefaultDbContext

描述您想要的需求方案

希望能够替换

描述你考虑过的解决方案

希望能够替换

附加上下文,比如截图

配置文件

image

数据库上下文

image

启动

image image
gmf520 commented 2 years ago

https://github.com/gmf520/osharp-ns20-samples/tree/master/src/OSharp.Samples.MultipleDbContexts 这有个多上下文的示例,你可以看看

xuejmnet commented 2 years ago

@gmf520 那么默认的defaultdbcontext是一定要有的吗还是说可以替换,我是想替换掉因为需要让dbcontext继承某个接口,default是你封装的我没办法方法继承某个接口

xuejmnet commented 2 years ago

@gmf520 如果无法替换是不是自定义的也需要继承dbcontextbase?

gmf520 commented 2 years ago

@xuejmnet 自定义上下文类是要从DbContextBase派生的,框架中很多时候使用上下文都是转化为DbContextBase来使用。

xuejmnet commented 2 years ago

@gmf520 好的谢谢那么默认的defaultsbcontext是否是必须要有的

gmf520 commented 2 years ago

非必须的,可以被替换掉

  1. 实体要映射到新的数据上下文,通过如下方式的DbContextType属性:

    public class SqlServerEntityConfiguration : EntityTypeConfigurationBase<SqlServerEntity, Guid>
    {
        public override Type DbContextType { get; } = typeof(SqlServerDbContext);
    
        public override void Configure(EntityTypeBuilder<SqlServerEntity> builder)
        {  }
    }
  2. 有几个内置的实体类,例如Function,EntityInfo等,也需要重新添加相应的EntityConfiguration配置类来映射新的数据上下文
  3. 主程序中的Startups文件夹中的与数据上下文相关的类型也要重新定义
xuejmnet commented 2 years ago

好的谢谢