DDD实战3 领域层的设计
1.新建一个解决方案文件夹 取名Product
2.在Product解决方案文件夹下面创建一个.net core 类库项目 取名Product.Domain,引用项目DDD.Base项目
3.在类库下面新建一个文件夹 取名POCOModels,在这个文件夹下面新建两个partial的类 分别取名ProductSPU和ProductSKU
4.新建一个IProductContext的接口
/// <summary>
/// 上下文接口,之所以创建这个接口是因为,在本例子中会使用EFCore的上下文接口,但是以后也可能用别的接口
/// </summary>
public interface IProductContext
{
}
5新建一个ProductEFCoreContext的类,在这个类中创建两个属性DbSet<ProductSPU> ProductSPU 和 DbSet<ProductSKU> ProductSKU
因为当前项目引用的DDD.Base项目安装了EntityFrameWorkCore.SqlServer 所以当前项目默认带了DbSet
//注意这里继承了DbContext
public class ProductEFCoreContext:DbContext,IProductContext
{
public DbSet<ProductSKU> ProductSKU { get; set; }
public DbSet<ProductSPU> ProductSPU { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=localhost;DataBase=DDD1DB;User Id=sa;Password=0");
}
}
//干完上面这个就要就对应的项目生成数据库脚本
//dotnet ef migrations add InitialCreate
//然后
//dotnet ef database update
6.生成数据库,记住要安装两个包EntityFrameWorkCore.SqlServer 和 EntityFrameWorkCore.SqlServer.Tools。此外还要修改一下csproj文件。此处安装EntityFrameWorkCore.SqlServer 我觉得有点像是一个BUG
7.创建一个Models文件夹 在其中新建ProductSPU和ProductSKU 的另外两个Partial 注意命名空间要修改一致。在这两个类中分别创建两个创建当前类的方法。
8.关从上下文生成数据库要注意的 是:生成数据库使用的两行命令,不是在nuget控制台中执行的,而应该是进入类库项目所在文件夹 然后cmd出控制台,在控制台中国使用两行命令生成数据库(先生成迁移脚本,再执行迁移脚本)
9.因为重装系统,安装了新的vs,进行步骤8的时候 有报错如下:

面对这个问题的解决方法是 将csproj里面的信息做如下修改:

执行成功 如下:

再执行脚本 成功如下:

DDD实战3 领域层的设计的更多相关文章
- DDD实战进阶第一波(五):开发一般业务的大健康行业直销系统(实现产品上下文领域层)
从这篇文章开始,我们根据前面的DDD理论与DDD框架的约束,正式进入直销系统案例的开发. 本篇文章主要讲产品上下文中的领域层的主要实现,先简单讲下业务方面的需求:产品SPU与产品SKU,产品SPU主要 ...
- Java开发架构篇:DDD模型领域层决策规则树服务设计
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 在上一章节介绍了领域驱动设计的基本概念以及按照领域驱动设计的思想进行代码分层,但是仅 ...
- DDD~领域层
回到目录 再论Domain与Infrastructure 在面向领域的设计中,领域层(Domain)实现上是位于最底层的,其它层有对它的引用,包括基础设施层(Infrastructure)也是去引用领 ...
- 【DDD】使用领域驱动设计思想实现业务系统
最近新接了一个业务系统——社区服务系统,为了快速熟悉和梳理老系统的业务逻辑和代码,同时对老系统代码做一些优化,于是打算花上一个月时间不间断地对老系统服务进行重构.同时,考虑到社区业务的复杂性,想起了之 ...
- [Abp vNext 源码分析] - 5. DDD 的领域层支持(仓储、实体、值对象)
一.简要介绍 ABP vNext 框架本身就是围绕着 DDD 理念进行设计的,所以在 DDD 里面我们能够见到的实体.仓储.值对象.领域服务,ABP vNext 框架都为我们进行了实现,这些基础设施都 ...
- DDD实战进阶第一波(九):开发一般业务的大健康行业直销系统(实现经销商上下文仓储与领域逻辑)
上篇文章主要讲述了经销商上下文的需求与POCO对象,这篇文章主要讲述该界限上下文的仓储与领域逻辑的实现. 关于界限上下文与EF Core数据访问上下文参考产品上下文相应的实现,这里不再累述. 因为在经 ...
- DDD实战进阶第一波(十三):开发一般业务的大健康行业直销系统(订单上下文领域逻辑)
前一篇文章主要讲了订单上下文的POCO模型,其中订单与订单项中有大量的值对象.这篇文章主要讲讲这些值对象以及订单项.订单相关的领域逻辑. 1.ProductSKUs值对象领域逻辑:ProductSKU ...
- DDD(Domain-Driven Design) 领域驱动设计
DDD(Domain-Driven Design) 领域驱动设计 1. DDD(Domain-Driven Design)是什么? DDD是Eric Evans在2003年出版的<领域驱动设计: ...
- 从壹开始微服务 [ DDD ] 之十 ║领域驱动【实战篇·中】:命令总线Bus分发(一)
烽火 哈喽大家好,老张又见面了,这两天被各个平台的“鸡汤贴”差点乱了心神,博客园如此,简书亦如此,还好群里小伙伴及时提醒,路还很长,这些小事儿就随风而去吧,这周本不打算更了,但是被群里小伙伴“催稿”了 ...
随机推荐
- [Ramda] Getter and Setter in Ramda & lens
Getter on Object: 1. prop: R.prop(}); //=> 100 R.prop('x', {}); //=> undefined 2. props: R.pro ...
- Linux下交叉编译gdb,gdbserver+gdb的使用以及通过gdb调试core文件
交叉编译gdb和gdbserver 1.下载gdb:下载地址为:http://ftp.gnu.org/gnu/gdb/按照一般的想法,最新版本越好,因此下载7.2这个版本.当然,凡事无绝对.我们以gd ...
- ASCII码的问题
数字0在ASCII的不同进制下表示:
- php实现求链表中倒数第k个节点
php实现求链表中倒数第k个节点 一.总结 $head = $head->next; //1.将$head节点next域里面的记录的那个地址值($head节点的下一个节点的地址)给$head,$ ...
- angular表单经验分享
原文 https://www.jianshu.com/p/af359bd04f32 大纲 1.表单的名字不可以和传入的值的名字相同 2.在模板驱动表单的时候要使用angular表单的验证功能,需要将n ...
- angular的学习参考材料
原文地址:https://www.jianshu.com/p/b9db7bb3d4ec 目的 其实写这篇文章的主要目的是为了提供给那些刚刚入门angular或者有意学习angular的读者准备的. 我 ...
- oracle 重置序列从指定数字开始的方法详解
原文 oracle 重置序列从指定数字开始的方法详解 重置oracle序列从指定数字开始 declare n ); v_startnum ):;--从多少开始 v_step ):;--步进 tsql ...
- Ubuntu 16.04下安装Anaconda
1.下载Anaconda到系统 官网:https://www.anaconda.com/download/ 清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu. ...
- Web报表工具FineReport实现EXCEL数据导入自由报表
在制作填报报表的时候.对于空白填报表,经常导出为Excel,派发给各部门人员填写后上交.怎样能避免手动输入,直接将Excel中的数据导入到填报表中提交入库呢? 这里以一个简单的员工信息填报演示样例进行 ...
- css3-5 css3鼠标、列表和尺寸样式怎么用(文字有关的样式会被继承)
css3-5 css3鼠标.列表和尺寸样式怎么用(文字有关的样式会被继承) 一.总结 一句话总结:css标签中文字有关的样式会被继承.由常用样式记起. 1.鼠标常用样式有哪些? cursor:poi ...