.net ef core 领域设计代码转换(上篇)
一、前言
.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 领域设计代码转换(上篇)相关推荐
- mysql多租户schema复制,Asp.net core下利用EF core实现从数据实现多租户(3): 按Schema分离 附加:EF Migration 操作...
前言 前段时间写了EF core实现多租户的文章,实现了根据数据库,数据表进行多租户数据隔离. 今天开始写按照Schema分离的文章. 其实还有一种,是通过在数据表内添加一个字段做多租户的,但是这种模 ...
- EF Core 3 的 40 个中断性变更
为了修复 Entify Framework Core 中许多已发现的缺陷,微软在 EF Core 3 中引入了 40 个中断性变更.我们可以在微软文档中查看完整的中断性变更列表,本文仅列举几个主要的点 ...
- 讨论过后而引发对EF 6.x和EF Core查询缓存的思考
前言 最近将RabbitMQ正式封装引入到.NET Core 2.0项目当中,之前从未接触过这个高大上的东东跟着老大学习中,其中收获不少,本打算再看看RabbitMQ有时间写写,回来后和何镇汐大哥探讨 ...
- EF Core 数据变更自动审计设计
EF Core 数据变更自动审计设计 Intro 有的时候我们需要知道每个数据表的变更记录以便做一些数据审计,数据恢复以及数据同步等之类的事情, EF 自带了对象追踪,使得我们可以很方便的做一些审计工 ...
- ABP Framework:移除 EF Core Migrations 项目,统一数据上下文
原文:Unifying DbContexts for EF Core / Removing the EF Core Migrations Project[1] 导读:软件开发的一切都需要平衡 在 AB ...
- 微软发布 Entity Framework EF Core 8 或 EF8
Entity Framework 现已被广泛使用,微软首席软件工程经理 Arthur Vickers 日前在一个在线社区会议上的发言. Entity Framework Core 8.0(也称为 EF ...
- EF Core数据库Provider一览
当EF Core 1.x系列和2.0版本之间经过重大的重写时,所有EF Core数据库Provider都受到重创.从那时起,各种私人和商业开发团队一直在努力填补这个空白. 正文 当EF Core 1. ...
- 【ASP.NET Core】EF Core 模型与数据库的创建
大家好,欢迎收看由土星卫视直播的大型综艺节目--老周吹逼逼. 今天咱们吹一下 EF Core 有关的话题.先说说模型和数据库是怎么建起来的,说装逼一点,就是我们常说的 "code first ...
- [EF Core]数据迁移(二)
摘要 在实际项目中,大多都需要对业务逻辑以及操作数据库的逻辑进行分成操作,这个时候该如何进行数据的迁移呢? 步骤 上篇文章:EF Core数据迁移操作 比如,我们将数据上下文放在了Data层. 看一下 ...
最新文章
- matlab图像处理命令(二)
- objective-c 多媒体 音乐播放
- python3迭代器和可迭代对象_一文读懂 Python3 可迭代对象、迭代器、生成器区别...
- leetcode :动态规划
- EL toString()功能,对象转换字符串
- techempower拿分系列之aspcore分析
- 求叶节点带权路径长度之和
- Extjs4.2——bbar的默认类型(xtype)
- python 小说数据挖掘_Python 中的实用数据挖掘
- 99乘法表 (输入一个数,以该数为行数输出乘法表)
- tomcat端口被占用了怎么办
- 缓存与IO(很经典)
- 如何得到最后N位都是1的二进制数
- 国密算法和GmSSL介绍
- Matlab uicontrol 用法
- Nmap发现局域网中存活主机
- matlab三元方程拟合,3元函数拟合及结果.docx
- 【毕业设计】天气数据分析系统 - python 大数据
- CXF系列(四):CXF整合spring
- Office2007打开word和excel文件速度慢,在两个打开的word文件之间切换的速度慢,如何处理?...