推荐开源数据库访问组件 - DapperEx

DapperEx 是一款数据库访问组件,支持 Sqlserver 和 PostgreSql。她提供了 Lambda 表达式方式的操作。她以 Dapper 作为底层,提供更方便快捷的数据库访问方式。

适用平台: .Net Framework 4.5.1 及以上  .Net Standard 2.0 及以上。

项目地址:https://github.com/zl33842901/DapperEx

与 EF 异同:同 EF 一样,都提供了表达式方式的数据库操作风格。但是 DapperEx 不是一款 ORM,仅是一款数据库访问组件,非常轻量级。

适用项目:如果您想在访问数据库时使用表达式,但又不想使用 EF 那样的重型ORM,那 DapperEx 是一个不错的选择。尤其是在您使用 PostgreSql 的 Jsonb 字段时,DapperEx 提供了一种友好的方式。

安装方法:在 Nuget 管理器里查找 xLiAd.DapperEx,把 xLiAd.DapperEx.MsSql.Core、xLiAd.DapperEx.Repository 安装到您的数据访问层或基础设施层项目。如果您使用 PostgreSql 数据库,还需要安装 xLiAd.DapperEx.RepositoryPg。

使用方法:

1,您需要编写实体类,DapperEx 没有提供代码生成功能,您可以手写实体类,或使用代码生成工具。例如:

    public class Author
    {
        [Identity]
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }
        public int AId { get; set; }
    }

在此代码中,Identity 特性代表标识字段,Key 特性代表主键,不与数据库对应的字段要加 NotMapped 特性。

2,您要实例化一个仓储。例如:

Repository<Author> reposAuthor = new Repository<Author>
("Data Source=127.0.0.1;Initial Catalog=数据库名;Persist Security Info=True;User ID=sa;Password=密码");

3,您可以愉快地访问数据库了。例如:

reposAuthor.Where(x => x.Name == "张三"); //查找 Name 为 张三 的所有数据。
reposAuthor.UpdateWhere(x => x.Id == 5, x => x.Name, "李四"); //把 Id 为5的数据的 Name,改为李四。

注:增删改查都提供了友好的使用方法,等待您自己去挖掘。对于刚刚执行过的 SQL 操作,Repository 提供了 SqlString 和 Params 两个属性,来调试是否执行了正确的 Sql 语句和参数。

对于 PostgreSql 数据库,DapperEx 提供了对 Jsonb 字段的友好支持。您可以像下面这样编写代码:

    public class Author
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime BirthDay { get; set; }
    }
    [Table("News2", Schema = "public")]
    public class News2
    {
        [Key]
        [Identity]
        public int Id { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
        [JsonColumn]
        public Author[] Author { get; set; }
    }
    [Table("News", Schema = "public")]
    public class NewsTest
    {
        [Key]
        [Identity]
        public int Id { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
        [JsonColumn]
        public Author Author { get; set; }
    }

注意 NewsTest 类和 News2 类的 Author 字段,都是复杂类型。需要在设计数据库时,设置为 Jsonb 类型字段;并且要在代码里加上 JsonColumn 特性。

这样无论增删改查时,DapperEx 都会支持这个字段。例如:

string constring = "Host=127.0.0.1;Port=5432;Database=数据库;Username=postgres;Password=密码";
RepositoryPg<NewsTest> RepoNews => new RepositoryPg<NewsTest>(constring);
var rst = RepoNews.Where(x => x.Author.Name.Contains("张")); //查询 Author 的 Name 包含张的。

RepositoryPg<News2> RepoNews2 => new RepositoryPg<News2>(constring);
var rst2 = RepoNews2.FieldAny<Author>(x => x.Author, x => x.Name.Contains("张") && x.Id > 2)
.Where(x => true, x => x.Title);
//查询 Author 集合字段里 Name 包含张,且 Id 大于2的;取这样数据的 Title 字段。

另:在测试项目里,有比较详细的各种操作的示例代码,注意下载下来需要先执行 SQL 哦,才会有测试数据。还等什么,快下载下来撸一撸吧。此组件为本人开源,有什么问题可发到评论里。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值