欧博会员开户:C# 数据操作系列 - 13 SugarSql初探

2020-05-23 7 views 0

扫一扫用手机浏览

0. 前言

前言,暂时挥别NHibernate(虽然我突然发现这玩意还挺有意思的,不外看得人不多)。大步进入了有许多小伙伴向我安利的SQLSugar,嗯,我一直叫SugarSQL,好像是这个吧?

这是一个由海内开发者开发的ORM框架,是一个轻量级框架(最新版的sqlSugarCore也许只有290kb)。下图是sqlSugar的功效形貌:

从图中我们能够也许看出,SqlSugar的使用需要预先建立一个SqlSugarClient工具。SqlSugar在此基础上添加了CRUD、实体信息维护(映射关系)、设置(AOP/过滤器等)、模式(DbFirst、CodeFirst)另有一些工具类等。可以看到这是一个简而全的框架。

同时,SqlSugar也为查询举行了进一步的扩展,以下是它支持的功效,以及在查询上的增强:

好了,空话不多说,先来试一下若何使用吧。

1. 安装

本节环境是dotnet + vscode。由于我的Rider过时了,懒得折腾。系统又是Linux,以是选择这种方式。至于Visual Studio和Rider的操作,十分简朴,而且之前《C#基础系列16》里有过先容。

先建一个解决方案,名字为DataProvider:

dotnet new sln --name DataProvider

然后建立一个SqlSugarDemo的控制台项目:

dotnet new console --name SqlSugarDemo

将这个项目添加到解决方案里:(这一步为了利便后续治理)

dotnet sln add SqlSugarDemo

然后准备安装 sqlSugarCore 。SqlSugar有两个版本,这里使用的是sqlSugarCore,这是针对.net core支持的版本。另一个是sqlSugar,是基于.netframework 4.X的。我们的系列是.net core的,以是就使用sqlSugarCore。

由于我们只是给项目SqlSugarDemo添加这个包,而不是给整个解决方案添加,以是我们需要预先切换目录到SqlSugarDemo里:

cd SqlSugarDemo/

然后使用命令行安装 sqlSugarCore:

dotnet add package sqlSugarCore

或者使用 NuGet:

Install-Package sqlSugarCore

过一会就可以在控制台中看到安装乐成的新闻

log  : Restore completed in XX sec for XXXXXX/SqlSugarDemo/SqlSugarDemo.csproj.

2. 基本使用示例

在上一节中,我们乐成在项目中安装了sqlSugarCore,那么在这一节中将率领小伙伴们一起探索SqlSugar。

先建立一个通俗的模子:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

建立一个操作类,取名为 DefaultContext,凭据给出的文档得知,SqlSugar每次操作数据的时刻需要持有一个 SqlSugarClient工具。以是,这个类的界说应该如下:

public class DefaultContext
{
    public SqlSugarClient Client { get; }

    public DefaultContext(string connectionString, DbType dbType)
    {
        Client = new SqlSugarClient(new ConnectionConfig
		{
            ConnectionString = connectionString,//"Data Source=./demo.db",
            DbType = dbType,
            IsAutoCloseConnection = true,
        });
    }
}
  • ConnectionString :毗邻字符串
  • DbType:数据库类型,共有以下几个值
    • MySql
    • SqlServer
    • Sqlite
    • Oracle
    • PostgreSQL
  • IsAutoCloseConnection:是否自动关闭毗邻,推荐true,默以为false。默认情况下,需要手动释放

然后测试插入:

var context = new DefaultContext("Data Source=./demo.db", DbType.Sqlite);
context.Client.Insertable<Person>(new Person
{
    Age = 10,
    Name = "小明"
}).ExecuteCommand();

这个时刻,提醒如下错误:no such table: Person

缘故原由很简朴,由于数据库demo.db 里没有这个表。也就是SqlSugar默认不会自动天生表,但天生了一个空壳数据库。

这时刻,需要在DefaultContext的组织方式里,为Client添加一些设置:

Client.CodeFirst.InitTables<Person>();

这一行的意思是使用CodeFirst模式,自动天生表 Person。

固然,这样并不意味着就能继续了,我们还需要设置 主键计谋,在初始化 SqlSugarClient的时刻,修改为:

Client = new SqlSugarClient(new ConnectionConfig
{
    ConnectionString = connectionString,//"Data Source=./demo.db",
    DbType = dbType,
    IsAutoCloseConnection = true,
    InitKeyType = InitKeyType.Attribute  //添加这行,意思是凭据实体类取发现主键
});

然后重新插入,执行乐成。

现在举行查询测试:

var query = context.Client.Queryable<Person>();

query是一个ISugarQueryable<T>类型的元素,这个接口支持方式链查询和查询表达式两种查询方式:

var list = (from a in context.Client.Queryable<Person>()
            select a).ToList();
Console.WriteLine(list.Count);

通过这种方式,直接获取了一个Person类型的列表。

然后,我们将针对这几个元素举行修改和删除测试。先来修改:

list[0].Age =22;
context.Client.Updateable(list[0]).ExecuteCommand();

直接执行会提醒如下错误:

意思是没有提供主键或者检索条件。凭据它的错误信息,我们可以得知解决方式基础为两种:

修改方案1:

在Person类上添加主键,并设置自增进。

public class Person
{
    [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] 
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

解决方案2:

添加筛选条件:

context.Client.Updateable(list[0]).Where(t=>t.Name == "小明").ExecuteCommand();

我采用了第一个方式,添加了主键设置,重新运行,执行效果准确。

删除,在更新修改完成后,删除也正常使用:

context.Client.Deleteable(list[0]).ExecuteCommand();

3 总结

急忙一撇,发现SqlSugar也是一个让我感受惊艳的ORM框架,功效周全,效率也异常不错。下一篇将为小伙伴们深入探索一下sqlSugar。

更多内容烦请关注我的博客《高先生小屋》

,

Sunbet

Sunbet www.wzpyzwls.com sunbet是Sunbet的大型官方娱乐网站,游戏种类繁多,Sunbet免费无限制。现推出手机客户端app,24小时sunbet客服在线,只做让您满意的网站。

Sunbet网站内容转载自互联网,如有侵权,联系Sunbet删除。

本文链接地址:http://www.zzxslszjx.com/post/1154.html

相关文章

发表评论