zoukankan      html  css  js  c++  java
  • FreeSql.Repository (二)如何使用仓储

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

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

    安装

    环境1、.NET Core 或 .NET 5.0+

    dotnet add package FreeSql.Repository
    

    环境2、.NET Framework

    Install-Package FreeSql.DbContext
    

    定义

    使用 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)
    {
    }
    

    系列文章导航

  • 相关阅读:
    PHP chgrp() 函数
    PHP basename() 函数
    PHP 5 Filesystem 函数
    PHP rewinddir() 函数
    PHP readdir() 函数
    PHP opendir() 函数
    PHP getcwd() 函数
    PHP dir() 函数
    PHP closedir() 函数
    PHP chroot() 函数
  • 原文地址:https://www.cnblogs.com/FreeSql/p/14118452.html
Copyright © 2011-2022 走看看