专栏首页.NET开发那点事AgileRepository - 一个基于接口的Repository快速开发库

AgileRepository - 一个基于接口的Repository快速开发库

AgileRepository

这是一个可以帮助你快速开发Repository的lib。有点像SpringData JPA根据方法名、注解来自动生成查询方法的功能。 对于一些简单的查询,只需要定义接口就行了,实现都不用。 Github: AgileRepository

依赖

AspectCore >= 0.2.4 Dapper >= 1.50.4 DapperExtensions >= 1.6.3 System.Threading.Tasks.Extensions >= 4.3.0

使用

public interface IUserRepository:IAgileRepository<Users>
{
    [QueryByMethodName]
    IEnumerable<Users> QueryByUserName(string userName);

}
var repository = AgileRepository.Proxy.SingletonInstance<IUserRepository>();
repository.QueryByUserName("admin"); 

配置

    AgileRepository.SetConfig(new AgileRepositoryConfig()
    {
            SqlMonitor = (sql, paramters ) =>
            {
                    Console.WriteLine(sql);
            },
            ConnectionName = "conn"
    });

示例

根据sql查询

    [QueryBySql("SELECT * FROM USERS")]
    IEnumerable<User> TestSql();

    [QueryBySql("SELECT * FROM USERS where username=@userName")]
    IEnumerable<User> TestSql1(string userName); 

根据方法名称查询

    [QueryByMethodName]
    IEnumerable<User> QueryByUserName(string userName);

    [QueryByMethodName]
    IEnumerable<User> QueryByUserNameAndId(string userName, string id);

    [QueryByMethodName]
    IEnumerable<User> QueryByCreaterIsNull();

    [QueryByMethodName]
    IEnumerable<User> QueryByCreaterIsNotNull(); 

查询所有

    [QueryAll]
    IEnumerable<User> QueryAll(); 

根据 sql Count

    [CountBySql("Select count(*) from users")]
    int TestCount();

    [CountBySql("Select count(*) from users where userName=@userName")]
    int TestCount1(string userName); 

根据方法名Count

    [CountByMethodName]
    int CountByUserName(string userName);

    [CountByMethodName]
    int CountByIdAndUserName(string id, string userName);

Count所有

    [CountAll]
    int CountAll();

Insert

    [Insert]
    int Insert(User user);
    [Insert]
    int Insert(IEnumerable<User> users);

Update

    [Update]
    int Update(User user);

    [Update]
    int Update(IEnumerable<User> users);

    [Delete]
    int Delete(User user);

    [Delete]
    int Delete(IEnumerable<User> users);

    [DeleteByMethodName]
    int DeleteByUserName(string userName);

执行非查询sql

    [ExecuteBySql("Delete from [users] where id =@id ")]
    int Execute(string id);

支持的where关键字

Key

Name

Where

And

QueryByUserNameAndId

where UserName=@UserName And Id=@Id

Or

QueryByUserNameOrId

where UserName=@UserName Or Id=@Id

IsNull

QueryByUserNameIsNull

where UserName Is Null

IsNotNull

QueryByUserNameIsNotNull

where UserName Is Not Null

GreaterThen

QueryByAgeGreaterThen

where Age>@Age

GreaterEqual

QueryByAgeGreaterEqual

where Age>=@Age

LessThen

QueryByAgeLessThen

where Age<@Age

LessEqual

QueryByAgeLessEqual

where Age<=@Age

Not

QueryByAgeNot

where Age!=@Age

In

QueryByUserNameIn

where UserName in @UserName

NotIn

QueryByUserNameNotIn

where UserName Not in @UserName

Like

QueryByUserNameLike

where UserName Like @UserName

NotLike

QueryByUserNameNotLike

where UserName Not Like @UserName

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用CodeDom动态生成类型

    .NET 3.5的时候加入了匿名类型这个特性,我们可以直接使用 new {name="abc"} 来直接生成一个对象。这个特性现在应用的地方很多,比如dappe...

    kklldog
  • 使用签名来保证ASP.NET MVC OR WEBAPI的接口安全

    当我们开发一款App的时候,App需要跟后台服务进行通信获取或者提交数据。如果我们没有完善的安全机制则很容易被别用心的人伪造请求而篡改数据。 所以我们需要使用...

    kklldog
  • .Net Core 自定义配置源从配置中心读取配置

    配置,几乎所有的应用程序都离不开它。.Net Framework时代我们使用App.config、Web.config,到了.Net Core的时代我们使用ap...

    kklldog
  • 蚂蚁区块链第16课 JS SDK数据模型(账户|合约|交易|收据|日志|区块)

    本文讲解蚂蚁区块链合约平台 JS SDK 涉及的数据模型,包括账户模型,合约模型,交易模型,收据模型,日志模型,区块模型。

    辉哥
  • 我使用的Unity开发多语言处理方案

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    bering
  • 51Nod--1018 排序

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1018

    指点
  • friend关键字使用之雇员与雇主类-C++

    汐楓
  • 有了Debug权限就能干坏事?小心了,你的一举一动尽在系统监控中

    昨天Jerry在家度过了有生以来年味最淡的一个除夕夜。为响应政府和专家的号召,没有走亲访友,宅在家中,与亲人和代码一起,度过了一个平静的除夕夜。

    Jerry Wang
  • 洛谷P1200 [USACO1.1]你的飞碟在这儿

    题目描述 众所周知,在每一个彗星后都有一只UFO。这些UFO时常来收集地球上的忠诚支持者。不幸的是,他们的飞碟每次出行都只能带上一组支持者。因此,他们要用一种聪...

    attack
  • 网络安全自学篇-PHP代码审计(十一)

    作者复现的是Axublog1.1.0版本下对用户输入过滤不严导致login.php页面存在SQL注入漏洞,攻击者可以利用漏洞进行SQL注入直接登录网站后台。 使...

    字节脉搏实验室

扫码关注云+社区

领取腾讯云代金券