H5W3
当前位置:H5W3 > 收藏夹 > 正文

FreeSql.Repository (二)如何使用仓储

欢迎来到《FreeSql.Repository 仓储模式》系列文档,本系列文档专注介绍 【仓储+工作单元】 的使用方式。完整文档请前往 wiki 中心:https://github.com/dotnetcore/FreeSql/wiki

FreeSql.Repository 作为 FreeSql.dll 的扩展,实现了通用仓储层功能,开箱即可,可甜可咸。

安装

dotnet add packages FreeSql.Repository

or

Install-Package FreeSql.Repository

定义

使用 FreeSql.Repository 仍然需要提前创建 IFreeSql:

static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.Sqlite, connectionString)
.UseAutoSyncStructure(true) //自动迁移实体的结构到数据库
.Build(); //请务必定义成 Singleton 单例模式
public class Song
{
[Column(IsIdentity = true)]
public int Id { get; set; }
public string Title { get; set; }
}

使用方法

1、IFreeSql 的扩展方法,在编码中的任何地方都可以这样使用;

var curd = fsql.GetRepository<Song>();
crud.Insert(new Song()); //插入
curd.Update(new Song { Id = 10, Title = "爱你一万年" });
//...

注意:同一个 Repository 实例对象在多线程中使用不安全

repo.Insert 插入数据,适配各数据库优化执行 ExecuteAffrows/ExecuteIdentity/ExecuteInserted
如果实体类有自增,插入后的值将回填给实体对象

2、继承实现;

public class SongRepository : BaseRepository<Song, int>
{
public SongRepository(IFreeSql fsql) : base(fsql, null, null) {}
//在这里增加 CURD 以外的方法
}

3、依赖注入;

public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IFreeSql>(fsql);
services.AddFreeRepository(null, this.GetType().Assembly);
}
//在控制器使用
public SongController(IBaseRepository<Song> repo1, SongRepository repo2)
{
}

系列文章导航

  • (一)什么是仓储

  • (二)如何使用仓储

  • (三)实体特性

  • (四)工作单元

  • (五)状态管理

  • (六)导航属性

  • (七)多表查询

  • (八)级联加载

  • (九)级联保存

  • (十)动态实体类型

  • (十一)分表

  • (十二)如何扩展

本文地址:H5W3 » FreeSql.Repository (二)如何使用仓储

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址