Skip to content

工作单元

28810 edited this page Dec 31, 2019 · 32 revisions

UnitOfWork 可将多个仓储放在一个单元管理执行,最终通用 Commit 执行所有操作,内部采用了数据库事务;

var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + 
    "Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10";

IFreeSql fsql = new FreeSql.FreeSqlBuilder()
    .UseConnectionString(FreeSql.DataType.MySql, connstr)
    .UseAutoSyncStructure(true) //自动同步实体结构到数据库
    .Build(); //请务必定义成 Singleton 单例模式

如何使用

using (var uow = fsql.CreateUnitOfWork()) {
    
    var songRepos = uow.GetRepository<Song>();
    var userRepos = uow.GetRepository<User>();

    //上面两个仓储,由同一UnitOfWork uow 创建
    
    //在此执行仓储操作
    
    //这里不受异步方法影响

    uow.Commit();
}

参考资料

Clone this wiki locally