FreeSQL是功能強大的O/RM組件,支持.NET Core 2.1+,.NET Framework 4.0+,Xamarin和AOT。
英語| 中文
QQ組: 561616019(可用) 、4336577(完整)、8578575(完整)、52508226(完整)
| 入門| 選擇| 更新| 插入| 刪除| 常問問題 |
| 表達| CodeFirst | dbfirst | 過濾器| aop |
| 存儲庫| Unitofwork | 動態操作| Ado |
| 讀/寫| 分裂表| 隱藏技術|更新註釋 |
請選擇開發模式:
一些使用FreeSQL的開源項目:

dotnet添加軟件包freesql.provider.sqlite
static IFreeSql fsql = new FreeSql . FreeSqlBuilder ( )
. UseConnectionString ( FreeSql . DataType . Sqlite , @"Data Source=document.db" )
. UseAutoSyncStructure ( true ) //automatically synchronize the entity structure to the database
. Build ( ) ; //be sure to define as singleton mode
class Song {
[ Column ( IsIdentity = true ) ]
public int Id { get ; set ; }
public string Title { get ; set ; }
public string Url { get ; set ; }
public DateTime CreateTime { get ; set ; }
public ICollection < Tag > Tags { get ; set ; }
}
class Song_tag {
public int Song_id { get ; set ; }
public Song Song { get ; set ; }
public int Tag_id { get ; set ; }
public Tag Tag { get ; set ; }
}
class Tag {
[ Column ( IsIdentity = true ) ]
public int Id { get ; set ; }
public string Name { get ; set ; }
public int ? Parent_id { get ; set ; }
public Tag Parent { get ; set ; }
public ICollection < Song > Songs { get ; set ; }
public ICollection < Tag > Tags { get ; set ; }
} //OneToOne、ManyToOne
fsql . Select < Tag > ( ) . Where ( a => a . Parent . Parent . Name == "English" ) . ToList ( ) ;
//OneToMany
fsql . Select < Tag > ( ) . IncludeMany ( a => a . Tags , then => then . Where ( sub => sub . Name == "foo" ) ) . ToList ( ) ;
//ManyToMany
fsql . Select < Song > ( )
. IncludeMany ( a => a . Tags , then => then . Where ( sub => sub . Name == "foo" ) )
. Where ( s => s . Tags . Any ( t => t . Name == "Chinese" ) )
. ToList ( ) ;
//Other
fsql . Select < YourType > ( )
. Where ( a => a . IsDelete == 0 )
. WhereIf ( keyword != null , a => a . UserName . Contains ( keyword ) )
. WhereIf ( role_id > 0 , a => a . RoleId == role_id )
. Where ( a => a . Nodes . Any ( t => t . Parent . Id == t . UserId ) )
. Count ( out var total )
. Page ( page , size )
. OrderByDescending ( a => a . Id )
. ToList ( )更多的..
fsql . Select < Song > ( ) . Where ( a => new [ ] { 1 , 2 , 3 } . Contains ( a . Id ) ) . ToList ( ) ;
fsql . Select < Song > ( ) . Where ( a => a . CreateTime . Date == DateTime . Today ) . ToList ( ) ;
fsql . Select < Song > ( ) . OrderBy ( a => Guid . NewGuid ( ) ) . Limit ( 10 ) . ToList ( ) ;
fsql . Select < Song > ( ) . ToList ( a => new
{
a . Id ,
Tags = fsql . Select < Tag > ( ) . ToList ( ) ,
SongTags = fsql . Select < SongTag > ( ) . Where ( b => b . TopicId == a . Id ) . ToList ( )
} ) ;更多的..
dotnet添加軟件包freesql.repository
[ Transactional ]
public void Add ( ) {
var repo = ioc . GetService < BaseRepository < Tag > > ( ) ;
repo . DbContextOptions . EnableCascadeSave = true ;
var item = new Tag {
Name = "testaddsublist" ,
Tags = new [ ] {
new Tag { Name = "sub1" } ,
new Tag { Name = "sub2" }
}
} ;
repo . Insert ( item ) ;
}參考:在ASP.NET核心中使用TransactionalAttribute和UnitOfWorkManager來實現多重交易傳播。
freeSql查詢和dapper查詢
Elapsed: 00:00:00.6733199 ; Query Entity Counts: 131072 ; ORM: Dapper
Elapsed: 00:00:00.4554230 ; Query Tuple Counts: 131072 ; ORM: Dapper
Elapsed: 00:00:00.6846146 ; Query Dynamic Counts: 131072 ; ORM: Dapper
Elapsed: 00:00:00.6818111 ; Query Entity Counts: 131072 ; ORM: FreeSql *
Elapsed: 00:00:00.6060042 ; Query Tuple Counts: 131072 ; ORM: FreeSql *
Elapsed: 00:00:00.4211323 ; Query ToList < Tuple > Counts: 131072 ; ORM: FreeSql *
Elapsed: 00:00:01.0236285 ; Query Dynamic Counts: 131072 ; ORM: FreeSql *freesql tolist&dapper查詢
Elapsed: 00:00:00.6707125 ; ToList Entity Counts: 131072 ; ORM: FreeSql *
Elapsed: 00:00:00.6495301 ; Query Entity Counts: 131072 ; ORM: Dapper更多的..
以及其他為該項目提出重要建議的朋友,其中包括:
systemhejiyong, LambertW, mypeng1985, stulzq, movingsam, ALer-R, zouql, 深圳|涼茶, densen2014, LiaoLiaoWuJu, hd2y, tky753, feijie999, constantine, JohnZhou2020, mafeng8, VicBilibily, Soar, quzhen91, homejun, D4ilys等
L*y 58元、花花 88元、麥兜很乖 50元、網絡來者 2000元、John 99.99元、alex 666元、bacongao 36元、無名 100元、Eternity 188元、無名 10元、⌒.Helper~..oO 66元、習慣與被習慣 100元、無名 100元、蔡易喋 88.88元、中訊科技 1000元、Good Good Work 24元、Nothing 100元、蘭州天擎趙 500元、哈利路亞 300元、 無名 100元、蟄伏 99.99元、TCYM 66.66元、MOTA 5元、LDZXG 30元、Near 30元、建爽 66元、無名 200元、LambertWu 100元、無名 18.88元、烏龍 50元、無名 100元、陳懟懟 66.66元、陳懟懟 66.66元、丁淮 100元、李偉堅-Excel催化劑 100元、白狐 6.66元、她微笑的臉y 30元、Eternity²º²¹ 588元、夜歸柴門 88元、蔡易喋 666.66元、 *禮10 元、 litrpa 88元、Alax Chow 200 元、每日66 元、 k*t 66 元、藍100 元、*菜100元、生命如歌1000 元、山雞1000 元、山雞88 元、平凡100 元、大樹1000 元、大樹1000 元、軟軟的毛毛蟲66.66 元、問卷星2000 元、與你無關5000 元、與你無關5000元5000元
謝謝你的捐款
支付寶
微信
麻省理工學院