最近看了NopCommerce源码,用core学习着写了一个项目,修改的地方记录下。项目地址
NopCommerce框架出来好久了。18年的第一季度 懒加载出来后也会全部移动到.net core。那么就更好玩了。
项目内容
- 模仿部分
- 分层模式
- 引擎机制
- DI容器
- EF
- 仓储模式
- Mapping
- 部分修改
- .net core 重写类库
- EFcore mysql 动态加载dbset
当然NopCommerce还包含很多特技:Plugin,Seo,订阅发布,theme切换等等。这些后期再维护进去。
项目介绍
- 项目分层
- 1、Libraries
Nop.Core:【核心层】基础设施,例:领域对象,仓库接口,引擎接口,DI管理接口,反射,公共方法。
Nop.Data:【数据层】EF相关,dbcontext,仓储实现,mapping
Nop.Services:【服务层】数据逻辑处理由这层提供。
- 2、Presentation
Nop.Web:【页面层】展示界面。
Nop.Web.Framework:【页面基础层】web层的上层封装。例如启动项的实现,DI实现。
详细的分层思想和细节这里不再复述。
2.项目修改点
EF6转换到EFCore,数据库选择mysql,动态加载dbset 看了相关代码,在进行解释
1 public class DataBaseStartup: ISelfStartup 2 { 3 4 public void ConfigureServices(IServiceCollection services, IConfigurationRoot configuration) 5 { 6 services.AddDbContext<SelfDbContext>(x => x.UseMySql(configuration.GetConnectionString("MySql"))); 7 } 8 9 public void Configure(IApplicationBuilder application) 10 { 11 var dbContext=EngineContext.Current.ServiceProvider.GetService<SelfDbContext>(); 12 dbContext.Database.EnsureCreated(); 13 } 14 15 public int Order { get; } = 1; 16 }