日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/4 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .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 领域设计代码转换(上篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。