原文链接:https://blog.csdn.net/zls365365/article/details/131199132
第一步,自然是新建一个项目,控制台什么都可以。因为我还没想好怎么做一个完整的项目,那暂且用一个控制台举例吧。
下面自然是从NuGet安装sqlsugar了。注意鉴别需要安装的版本,我这里是安装sqlsugarcore。
安装完成后
看下它所依赖的程序集。
新建一个SqlConnection.cs
在这里,我们来完成SqlSugar连接SQLServer数据库的基本操作。语法上,其实和使用Microsoft.Data.SqlClient很相似,首先创建一个实例,
SqlSugarClient DB = new SqlSugarClient();
SqlSugarClient需要传入参数,我们以第一个为例,需要ConnectionConfig类型的参数
ConnectionConfig如下
下面就是一个具体的例子:
SqlSugarClient DB = new SqlSugarClient(new ConnectionConfig{ConnectionString = "Server=192.168.....",DbType = DbType.SqlServer,IsAutoCloseConnection = true,InitKeyType = InitKeyType.SystemTable});
名称 | 描述 | 必填 |
---|---|---|
DbType | 数据库类型 | 是 |
ConnectionString | 连接字符串 | 是 |
IsAutoCloseConnection | 自动释放和关闭数据库连接,如果有事务事务结束时关闭,否则每次操作后关闭 | |
InitKeyType | ORM读取自增列和主键的方式 ,建议从特性读取,如果从数据库读取需要SA等高级权限账号 | |
IsShardSameThread | 同线程共享SqlConnection但是不共享SqlSugarClient,非特殊情况不建议使用,特别是异步 | |
ConfigureExternalServices | 一些扩展层务的集成 | |
MoreSettings | 更多设置 | |
SlaveConnectionConfigs | 主从设置 |
然后我们就可以用这个链接数据库了。在写查询代码之前,还要增加一个类,作为映射。
[SugarTable("T_DouPoClass")]public class StudentInfo{[SugarColumn(ColumnName = "F_Name")]public string Name { get; set; }[SugarColumn(ColumnName = "F_Gender")]public string Gender { get; set; }[SugarColumn(ColumnName = "F_Class")]public string Class { get; set; }[SugarColumn(ColumnName = "F_Grade")]public string Grade { get; set; }}
我们这里类名和表名,属性和栏位名不同,所以需要标记一下。暂时没有使用Id的自增列。
新建一个查询方法:
public static List<StudentInfo> Query(){var db = GetInstance();return db.Queryable<StudentInfo>().ToList();}
根据上面的实例配置,使用Queryable就会查询出T_DouPoClass表中的所有数据,映射到StudentInfo,然后作为list返回。
我们通过下面的代码测试一下返回的结果
class Program{static void Main(string[] args){var Students = SqlConnection.Query();Console.WriteLine("连接成功");foreach (var student in Students){Console.WriteLine(student.Name);}}}
打个断点,查看获取的信息。
同样,我们进行增、删、改的动作。
增:
public static void Insert(StudentInfo student){var db = GetInstance();db.Insertable<StudentInfo>(student).ExecuteCommand();}
改:修改操作一般需要依靠主键,但是我们这里没有主键,所以需要额外指定栏位。
比如陀舍古帝的性别为异火,需要修改,那么就要指定更新Gender这个属性,然后根据Name这个属性进行更新。
public static bool Update(StudentInfo student){var db = GetInstance();db.Updateable<StudentInfo>(new StudentInfo {Grade = student.Grade,Class= student.Class,Name= student.Name, Gender="异火"}).UpdateColumns(s => new {s.Gender}).WhereColumns(s => s.Name).ExecuteCommand();return true;}
Updateable可接受的参数有多重,我们这里是传入更新后的对象,可以传入list进行多笔数据的更新。
删:删除需要依赖主键,所以这时候我就把Name设置为了主键(数据库设置)
[SugarColumn(ColumnName = "F_Name",IsPrimaryKey =true)]
public string Name { get; set; }
public static bool Delete(StudentInfo student){var db = GetInstance();db.Deleteable<StudentInfo>(student).ExecuteCommand();return true;}