.net ef core 领域设计代码转换(上篇)
一、前言
.net core 2.0正式版已經(jīng)發(fā)布幾個(gè)月了,經(jīng)過(guò)研究,決定把項(xiàng)目轉(zhuǎn)移過(guò)來(lái),新手的話可以先看一些官方介紹
傳送門:https://docs.microsoft.com/zh-cn/dotnet/core/
由于在領(lǐng)域設(shè)計(jì)模型上遇到了一些坑,故給大家分享出來(lái)自己的一些解決方案。
?
ok,直接上干貨,大概結(jié)構(gòu)如下:
?比較教科書式的架構(gòu)。
?
二、領(lǐng)域?qū)?/h1>
領(lǐng)域?qū)嶓w
?
值對(duì)象
?
規(guī)約接口
?
工作單元接口
?
?
倉(cāng)儲(chǔ)接口
?
聚合跟劃分,我們先建立一個(gè)簡(jiǎn)單的用戶實(shí)體
?
?三、倉(cāng)儲(chǔ)層
引用Microsoft.EntityFrameworkCore.Sqlite?
工作單元ISql接口
?
?工作單元IQueryableUnitOfWork接口
?
?
?接下來(lái)是重點(diǎn)了,構(gòu)造函數(shù)的改變:
?
OnModelCreating變化:
以前的設(shè)置
?
?現(xiàn)在ef core里面沒(méi)有提供這么方便的封裝,需要自己去實(shí)現(xiàn)
數(shù)據(jù)庫(kù)表名更改:
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();} }
?
關(guān)掉所有主外鍵關(guān)系的級(jí)聯(lián)刪除
?
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 override void Map(EntityTypeBuilder<User> builder){builder.HasKey(u => u.Id);} }
使用的時(shí)候就這樣添加,毫無(wú)違和感。
?
Sql查詢的方式改變了一下
?
User表倉(cāng)儲(chǔ)實(shí)現(xiàn)的時(shí)候注意一下構(gòu)造函數(shù)的類型,.net core依賴注入的時(shí)候會(huì)涉及到這里
?
四、應(yīng)用層
應(yīng)用層沒(méi)什么變化,直接貼代碼
?
五、分布式服務(wù)層
.net core自帶了一個(gè)簡(jiǎn)單的Ioc,所以以前我們用的類似于Unity等框架就可以去掉了
Configuration這個(gè)是怎么來(lái)的呢?
.net core現(xiàn)在建議采用Json等配置文件,用起來(lái)非常爽非常強(qiáng)大
然后我們需要確保存數(shù)據(jù)庫(kù)不存在的時(shí)候正確創(chuàng)建
?UserController代碼:
?六:展示層
WPF界面簡(jiǎn)單弄一下
后臺(tái)代碼:
原文地址:http://www.cnblogs.com/beefsteak/p/7805853.html
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的.net ef core 领域设计代码转换(上篇)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ASP.NET Core中的OWASP
- 下一篇: Microsoft的现代数据管理