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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[开源] FreeSql.Tools Razor 生成器

發(fā)布時(shí)間:2023/12/4 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [开源] FreeSql.Tools Razor 生成器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

FreeSql 經(jīng)過半年的開發(fā)和堅(jiān)持維護(hù),在 0.6.x 版本中完成了幾大重要事件:

1、按小包拆分,每個(gè)數(shù)據(jù)庫實(shí)現(xiàn)為單獨(dú) dll;

2、實(shí)現(xiàn) .net framework 4.5 支持;

3、同時(shí)支持 MySql.Data、MySqlConnector 的實(shí)現(xiàn);

4、自定義導(dǎo)航屬性關(guān)系的配置;

5、配套工具 FreeSql.Tools 發(fā)布;

本文主要講解第5項(xiàng),大主角往往在最后才出現(xiàn)!!!

在此之前一直被吐槽 FreeSql 臃腫,沒有小包開發(fā)理念。其實(shí)我是一點(diǎn)也不承認(rèn)這種評(píng)價(jià),雖然剛開發(fā)只有一個(gè) FreeSql.dll,但是在開發(fā)和規(guī)劃上簡(jiǎn)單了很多。

有一條開發(fā)原則講道:過早優(yōu)化是惡夢(mèng)!

大概意思是無論做什么項(xiàng)目,不要想著一開始就過度系統(tǒng)的、規(guī)范的執(zhí)行。從外界來看是正規(guī)了,但是進(jìn)度和穩(wěn)定性會(huì)大大折扣??梢圆恍盼?#xff0c;但是請(qǐng)一定要相信前人的總結(jié)啊!!!

從之前的一個(gè) dll 到拆分成小包,我們總共耗時(shí)兩天,雖然都在一個(gè)項(xiàng)目?jī)?nèi)開發(fā),但其實(shí)耦合性并不高。

車到山前必有路,時(shí)機(jī)到了自然會(huì)拆。這個(gè)時(shí)機(jī)也是奠定 FreeSql 走出了穩(wěn)定關(guān)鍵的一步。這樣就會(huì)有更多人愿意加入 FreeSql 陣營(yíng)。

  • 各數(shù)據(jù)庫單獨(dú)包、延時(shí)加載包;

  • FreeSql.Extensions.LazyLoading

  • FreeSql.Provider.MySql

  • FreeSql.Provider.PostgreSQL

  • FreeSql.Provider.SqlServer

  • FreeSql.Provider.Sqlite

  • FreeSql.Provider.Oracle

早期 FreeSql 主要是在 .net core 最方便的 ORM!NETStandard 是新的標(biāo)準(zhǔn),然而前段時(shí)間微軟又說 ..net5 將合并。。。變化真的太快。

在實(shí)現(xiàn)拆分小包后,其實(shí) FreeSql 的模塊更加清淅,并且依賴項(xiàng)非常之少,然后比較容易的做出了 4.5 framework 的適配。

目前支持的版本:

FreeSql.Provider.MySqlNETStandard2.0、net452
FreeSql.Provider.PostgreSQLNETStandard2.0、net45
FreeSql.Provider.SqlServerNETStandard2.0、net451
FreeSql.Provider.SqliteNETStandard2.0、net45
FreeSql.Provider.OracleNETStandard2.0、net45
FreeSql.Extensions.LazyLoadingNETStandard2.0、net45

mysql 是一個(gè)神奇的流行數(shù)據(jù)庫,在 .net 陣營(yíng)中使用量排名老二。mysql 的版本五花八門,從 5.6 開始有了不同的分支,分支的出現(xiàn)使得 ado.net 驅(qū)動(dòng)不通用。

很多人不推薦使用 MySql.Data 官方驅(qū)動(dòng),但是 FreeSql 一直在使用官驅(qū),并且支持了所有 5.6 類型,包括 enum/set 等。

然后就有一些人,特別是高手的那些來提出要求,適配一個(gè) MySqlConnector 的實(shí)現(xiàn),然后著名的 A大(茶叔)提了一道 PR ,創(chuàng)建了 FreeSql.Provider.MySqlConnector 項(xiàng)目,99.9999% 源碼和原來 FreeSql.Provider.MySql 相同,經(jīng)過 266 個(gè)單元測(cè)試后發(fā)現(xiàn),只需要兼容 enum/set 類型,參數(shù)化 ? @ 的處理就跑通了。然后就有了現(xiàn)在新的驅(qū)動(dòng)包:

FreeSql.Provider.MySqlConnectorNETStandard2.0、net45

然后 FreeSqlBuilder 使用反射決定使用哪個(gè) mysql 驅(qū)動(dòng)。代碼如下:

FreeSql 原先支持約定式導(dǎo)航關(guān)系配置,對(duì)于新項(xiàng)目開發(fā)無疑可約定,但是很多老項(xiàng)目命名不規(guī)范的就使用不了相關(guān)的功能。

有關(guān)約定配置可參考 github wiki 中心文檔

QQ 開發(fā)群真是個(gè)好平臺(tái),在發(fā)起討論后,各位大佬都紛紛提出建議,最后以一票否決了各大建議,哈哈。。

主要從語法和用戶使用的感受上設(shè)計(jì),還是那個(gè)理念:日式簡(jiǎn)約!不能加入太多特性和功能,增加用戶的理解和使用成本。

最終效果如下:



[Navigate("Song_id")]
public virtual List<song_tag> Obj_song_tag { get; set; }


[Navigate("Song_id")]
public virtual song Obj_song { get; set; }

[Navigate("Tag_id")]
public virtual tag Obj_tag { get; set; }

然后就能使用很多導(dǎo)航的騷操作功能了。

在此感謝這個(gè)工具的作者:mypeng1985,和參考者:movingsam

感謝有你們一幫熱心的使用者,幫助 FreeSql 生態(tài)添磚加瓦!!

FreeSql 在早期做過一套生成器模板,功能比較隱秘,一般人不知道如何使用。。之后就一直沉迷于 CodeFirst 的功能開發(fā),無法自拔。

然后在10天前,突然感覺 FreeSql 多了好多使用者,這個(gè)時(shí)間當(dāng)然需要有從數(shù)據(jù)庫生成實(shí)體的需求了!!

Q:沒必要搞這種東西了吧 市面上蠻多的,或者搞一套模板完全搞定了?

A:

  • 無法100%類型兼容啊,因?yàn)?FreeSql 支持的類型真的深,然后市場(chǎng)上的類型映射做不到 100% 匹配;

  • 為了挖掘更多功能,生成器還需要有導(dǎo)航屬性的支持,這是基本的,因?yàn)橛袑?dǎo)航屬性后,FreeSql 操作會(huì)騷許多;

本來我發(fā)起了一個(gè)純 winform 的生成器項(xiàng)目,界面都做好了如下:

是不是覺得很好看?我覺得好看。。。。其他人覺得丑。我在開發(fā)群發(fā)給大家看了之后,第二天 FreeSql.Tools 項(xiàng)目就搞出了新的界面,如下:

直接被秒殺了,這是來自作者:mypeng1985 的佳作。

界面看上去非常像 web,但其實(shí)不是的,仍然是一個(gè) winform 程序,使用了 html 做界面,c# 做操作功能。

源碼地址:https://github.com/2881099/FreeSql.Tools

FreeSql 從 2018年11月28日立項(xiàng),開發(fā),到今天 0.6.x,單元測(cè)試 1600+,生態(tài)也逐漸完善,有得到許多網(wǎng)友的鼓勵(lì)和支持,感謝你們!感謝參與項(xiàng)目的你們!

原文地址:https://www.cnblogs.com/FreeSql/p/10975776.html

.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總?http://www.csharpkit.com?

總結(jié)

以上是生活随笔為你收集整理的[开源] FreeSql.Tools Razor 生成器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。