# MVC-Repository-UnitOfWork **Repository Path**: CaptainBruke/mvc-repository-unit-of-work ## Basic Information - **Project Name**: MVC-Repository-UnitOfWork - **Description**: 基本框架:.net core 项目下,仓储模式、工作单元、多dbcontext、EFCore、CodeFirst、 MVC、webaip、.net 6 、AutoFac、 仓储使用示例、工作单元使用示例、分页使用示例、连表使用示例、连表分页使用示例。 最简单最容易上、基于仓储模式下的三层架构mvc项目。 亮点:不用写接口!不用写接口!不用写接口。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2022-05-27 - **Last Updated**: 2023-08-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: netcore6, 仓储模式, 工作单元, 多数据库, EFCore ## README # MVC-Repository-UnitOfWork #### 介绍 基本框架:.net core 项目下,仓储模式、工作单元、多dbcontext、EFCore、CodeFirst、 MVC、webaip、.net 6 、AutoFac、 仓储使用示例、工作单元使用示例、分页使用示例、连表使用示例、连表分页使用示例。 最简单最容易上、基于仓储模式下的三层架构mvc项目。 亮点:不用写接口!不用写接口!不用写接口。 #### 软件架构 软件架构说明 #### 项目启动说明 1.新建2个数据库:AppTestDB,AppTestDB2。(现在是空数据库)(目的就是控制创建的时可以选择数据库路径,可以忽略次步骤则使用SQLServer默认的路径建库)。如果使用其他数据库,则要获取对应的数据库provide的nuget,和修改对应数据库连接,在App.DbContexts项目下的config.json上修改。 2.进行CodeFirst生成数据库:还原项目,生成一下, VS2022的菜单栏上:【工具-->NuGet包管理器-->程序包管理器控制台】,调出操作控制台。 默认项目(j):选择App.DbContexts,在PM>上开始输入命令。。。。(具体参考【App.DbContexts】项目下的【迁移说明.txt】) 3.设置【App.Web】为启动项目,运行后看到界面,点击Test按钮,即可调试和查阅仓储模式、工作单元的使用。 #### CodeFirst 使用说明 1.配置好config.json里面的数据库连接,这里以2个数据库库为例(比如人们经常订单、用户角色权限、销售)等进行分库(早期数据库大家用一个就可以了,这个是可以拓展的。后面给大家搞一个主从复制,并在程序上自动设置连接是为读/写库)。 2.进行CodeFirst生成数据库:还原项目,生成一下, VS2022的菜单栏上:【工具-->NuGet包管理器-->程序包管理器控制台】,调出操作控制台。 默认项目(j):选择App.DbContexts,在PM>上开始输入命令以下命令: ##### add-migration AppTestDB-001 -context AppTestDBContext ##### update-database -context AppTestDBContext 这样就完成了AppTestDB数据迁移,打开数据库查看空数据库,这是,就可以看到有新的表添加了 同样AppTestDB2数据迁移类似: ##### add-migration AppTestDB2-001 -context AppTestDB2Context ##### update-database -context AppTestDB2Context 【代码在手,数据库我就有】 拓展资料:按需更新,可以使用 update-database AppTestDB2-001 -context AppTestDB2Context 其他操作:关于数据表添加/修改/删除、数据表字段增加/修改/删除等等??? a.数据表添加/修改:添加对应的Entity到对应的Entities文件夹下,并修改对应的DBContext,编写类似: public DbSet TestDetail { get; set; }这样的代码 b.数据表/删除:删除Entities文件夹下对应的Entity,并删除对应的DBContext里面 类似: public DbSet TestDetail { get; set; }这样的代码 c.字段添加/修改/删除:直接操作实体即可。 以上所有的最后:都进行生成一次CodeFirst迁移记录,并update-database。(参考2的步骤) #### 后期计划(看时间情况) 1. 加一个JWT,完成用户身份认证功能 2. 搞成多数据库(已有),核心数据库,做成读写分离,一写多读。 3. 其他非核心数据库,设计成通用数据库,如权限、日志、用户信息等 4. 前端不做前后的分离,全在mvc里面做,但是代码又是前后端分离的模式开发(vue,jq,还是什么....),就是弃用@razor语法。(可能母版页会用一下,其他一概不用),样式使用bootstrap、或layerUI等。这样对.netor就很友好 接私单什么的,直接套,小项目完全够用。其实我比较不太喜欢太多代码生成器的做法,多使用泛型效果会更好。比如我们的仓储、分页都是就是使用泛型。 如果这一套做好,妥妥的一套小框架了 #### 项目结构 ![项目结构](/项目结构.png) #### 代码使用部分截图 1. ![业务层属性注入](/业务层属性注入.png) 2. ![使用仓储](/使用仓储.png) 3. ![事务使用](/事务使用.png) 4. ![分页](/分页.png) 5. ![连表和分页](/连表和分页.png) 6. ![sql方式](/sql方式.png) 7. ![使用IOC](/使用IOC.png)