一、前言

.net core 2.0正式版已经发布几个月了,经过研究,决定把项目转移过来,新手的话可以先看一些官方介绍

传送门:https://docs.microsoft.com/zh-cn/dotnet/core/

由于在领域设计模型上遇到了一些坑,故给大家分享出来自己的一些解决方案。

ok,直接上干货,大概结构如下:

比较教科书式的架构。

二、领域层

领域实体

值对象

规约接口

工作单元接口

仓储接口

聚合跟划分,我们先建立一个简单的用户实体

三、仓储层

引用Microsoft.EntityFrameworkCore.Sqlite

工作单元ISql接口

工作单元IQueryableUnitOfWork接口

接下来是重点了,构造函数的改变:

OnModelCreating变化:

以前的设置

现在ef core里面没有提供这么方便的封装,需要自己去实现

数据库表名更改:

public static void SetSimpleUnderscoreTableNameConvention(this ModelBuilder modelBuilder)
{foreach (IMutableEntityType entity in modelBuilder.Model.GetEntityTypes()){Regex underscoreRegex = new Regex(@"((?<=.)[A-Z][a-zA-Z]*)|((?<=[a-zA-Z])\d+)");entity.Relational().TableName = underscoreRegex.Replace(entity.DisplayName(), @"$1$2").ToLower();}
}

关掉所有主外键关系的级联删除

public static void SetOneToManyCascadeDeleteConvention(this ModelBuilder modelBuilder)
{    foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys())){relationship.DeleteBehavior = DeleteBehavior.Restrict;}
}

Fluent Api 配置

public abstract class EntityTypeConfiguration<TEntity> where TEntity : class{    public abstract void Map(EntityTypeBuilder<TEntity> builder);
}
public static void AddConfiguration<TEntity>(this ModelBuilder modelBuilder, EntityTypeConfiguration<TEntity> configuration) where TEntity : class{configuration.Map(modelBuilder.Entity<TEntity>());
}
public class UserEntityTypeConfiguration : EntityTypeConfiguration<User>{   

    public override void Map(EntityTypeBuilder<User> builder){builder.HasKey(u => u.Id);}
}

使用的时候就这样添加,毫无违和感。

Sql查询的方式改变了一下

User表仓储实现的时候注意一下构造函数的类型,.net core依赖注入的时候会涉及到这里

四、应用层

应用层没什么变化,直接贴代码

五、分布式服务层

.net core自带了一个简单的Ioc,所以以前我们用的类似于Unity等框架就可以去掉了

Configuration这个是怎么来的呢?

.net core现在建议采用Json等配置文件,用起来非常爽非常强大

然后我们需要确保存数据库不存在的时候正确创建

UserController代码:

六:展示层

WPF界面简单弄一下

后台代码:

原文地址:http://www.cnblogs.com/beefsteak/p/7805853.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

.net ef core 领域设计代码转换(上篇)相关推荐

  1. mysql多租户schema复制,Asp.net core下利用EF core实现从数据实现多租户(3): 按Schema分离 附加:EF Migration 操作...

    前言 前段时间写了EF core实现多租户的文章,实现了根据数据库,数据表进行多租户数据隔离. 今天开始写按照Schema分离的文章. 其实还有一种,是通过在数据表内添加一个字段做多租户的,但是这种模 ...

  2. EF Core 3 的 40 个中断性变更

    为了修复 Entify Framework Core 中许多已发现的缺陷,微软在 EF Core 3 中引入了 40 个中断性变更.我们可以在微软文档中查看完整的中断性变更列表,本文仅列举几个主要的点 ...

  3. 讨论过后而引发对EF 6.x和EF Core查询缓存的思考

    前言 最近将RabbitMQ正式封装引入到.NET Core 2.0项目当中,之前从未接触过这个高大上的东东跟着老大学习中,其中收获不少,本打算再看看RabbitMQ有时间写写,回来后和何镇汐大哥探讨 ...

  4. EF Core 数据变更自动审计设计

    EF Core 数据变更自动审计设计 Intro 有的时候我们需要知道每个数据表的变更记录以便做一些数据审计,数据恢复以及数据同步等之类的事情, EF 自带了对象追踪,使得我们可以很方便的做一些审计工 ...

  5. ABP Framework:移除 EF Core Migrations 项目,统一数据上下文

    原文:Unifying DbContexts for EF Core / Removing the EF Core Migrations Project[1] 导读:软件开发的一切都需要平衡 在 AB ...

  6. 微软发布 Entity Framework EF Core 8 或 EF8

    Entity Framework 现已被广泛使用,微软首席软件工程经理 Arthur Vickers 日前在一个在线社区会议上的发言. Entity Framework Core 8.0(也称为 EF ...

  7. EF Core数据库Provider一览

    当EF Core 1.x系列和2.0版本之间经过重大的重写时,所有EF Core数据库Provider都受到重创.从那时起,各种私人和商业开发团队一直在努力填补这个空白. 正文 当EF Core 1. ...

  8. 【ASP.NET Core】EF Core 模型与数据库的创建

    大家好,欢迎收看由土星卫视直播的大型综艺节目--老周吹逼逼. 今天咱们吹一下 EF Core 有关的话题.先说说模型和数据库是怎么建起来的,说装逼一点,就是我们常说的 "code first ...

  9. [EF Core]数据迁移(二)

    摘要 在实际项目中,大多都需要对业务逻辑以及操作数据库的逻辑进行分成操作,这个时候该如何进行数据的迁移呢? 步骤 上篇文章:EF Core数据迁移操作 比如,我们将数据上下文放在了Data层. 看一下 ...

最新文章

  1. matlab图像处理命令(二)
  2. objective-c 多媒体 音乐播放
  3. python3迭代器和可迭代对象_一文读懂 Python3 可迭代对象、迭代器、生成器区别...
  4. leetcode :动态规划
  5. EL toString()功能,对象转换字符串
  6. techempower拿分系列之aspcore分析
  7. 求叶节点带权路径长度之和
  8. Extjs4.2——bbar的默认类型(xtype)
  9. python 小说数据挖掘_Python 中的实用数据挖掘
  10. 99乘法表 (输入一个数,以该数为行数输出乘法表)
  11. tomcat端口被占用了怎么办
  12. 缓存与IO(很经典)
  13. 如何得到最后N位都是1的二进制数
  14. 国密算法和GmSSL介绍
  15. Matlab uicontrol 用法
  16. Nmap发现局域网中存活主机
  17. matlab三元方程拟合,3元函数拟合及结果.docx
  18. 【毕业设计】天气数据分析系统 - python 大数据
  19. CXF系列(四):CXF整合spring
  20. Office2007打开word和excel文件速度慢,在两个打开的word文件之间切换的速度慢,如何处理?...

热门文章

  1. 阿里云云计算ACP考试知识点(标红为重点)
  2. 【转】HTML5移动端最新兼容问题解决方案
  3. 解决ubuntu下eclipse 经常崩溃的问题
  4. 指针变量的定义与引用
  5. 线性代数与矩阵论 习题 1.2.2
  6. windows下的NTP服务
  7. cisco路由器NAT配置
  8. Blazor University (3)组件 — 创建组件
  9. 简述LINQ的发展历程
  10. 愚蠢的领导才会用程序员祭天!!