.net ef core 领域设计代码转换(上篇)
来源:互联网 发布:2017淘宝双十一报名 编辑:程序博客网 时间:2024/06/05 12:08
一、前言
.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 领域设计代码转换(上篇)
- .net core 自动生成EF代码
- .net core mvc中使用ef
- .net core mvc中使用ef
- .net core mvc中使用ef
- NET Core 使用 EF Code First
- Asp.net Core 使用EF连接MariaDb
- ios core date使用(上篇)
- .NET Core跨平台的奥秘[上篇]:历史的枷锁
- 实现自己的.NET Core配置Provider之EF
- 【.Net码农】【MVC】MVC+EF+架构设计
- 领域驱动设计之代码优先-领域层设计-1 (翻译)
- 领域驱动设计之代码优先-领域层设计-2 (翻译)
- 领域驱动设计之代码优先-领域层设计-3 (翻译)
- 领域驱动设计之代码优先-领域层设计-4 (翻译)
- 领域驱动设计之代码优先-领域层设计-5 (翻译)
- 领域驱动设计之代码优先-领域层设计-6 (翻译)
- 领域驱动设计之代码优先-领域层设计-7 (翻译)
- 12.数据集市DataMart
- UNIX环境高级编程——文件操作之(read,write,lseek)
- 文档元素数据(meta,base等)
- 我心中的ASP.NET Core 新核心对象WebHost(一)
- Debug ASP.NET Core 2.0源代码
- .net ef core 领域设计代码转换(上篇)
- 离线方式安装svn插件到eclipse
- 计算机基础和组成原理——学习资料(更新.........)
- Google IO Ai应用
- 习题4.1(3)
- mybatis-generator
- ubuntu ss+chrome
- 读书笔记-整理的艺术
- shell中执行mysql语句的方法