前言: 之前看微软的文档学了一会EFCore,当时觉得还不错,但是在工作中也没有使用。然后前段时间终于要答辩完了,也没有去总结,写点什么。反正趁作为学生身份最后的几天玩几天也无所谓了。

首先,SqlSugar的官网:https://www.donet5.com/
官网有详细的文档,也有相关的论坛,如果有问题可以到里面讨论,

1.迁移与逆向迁移

在微软的文档中喜欢用这个词,其实意思就是把Model映射到数据库生成表。(建表)
反向迁移就是从数据库的表都读出来生成对应的Model

下面是一些和其他的框架的个人经验对比,如果想看如何使用可直接跳过。

这里如果你有hibernate或JPA的经验,这个迁移就是hibernate/jpa的ddl-auto属性,主要用来设置从数据模型到数据库表之中映射的行为。而且设置起来非常简单,只需要在配置文件中设置你要的这个属性的ddl属性的值就行了。
这里如果你有EFCore的经验,你大概也会觉得EFCore的数据迁移有些繁琐。
其一,要使用命令行工具,
其二,要多条命令配合–还需要设置必要的参数
其三,调试麻烦,要删除还需要remove-migration等命令
如果直接在代码里建表和调试一定会更简单和直白的,但我也不知道为什么要从包管理控制台来进行ORM操作。

一行代码建表

(试例使用SqlServer)
SqlSugar的建表就可以直接通过代码调用生成,比EFCore更方便
这里先准备一个Model

 public class Student{//sqlSugar提供了一个SugarColumn注解,它有非常多的属性用来完成//设置ORM的规则,你只需要记住这一个注解,然后根据提示选择需要的属性即可[SugarColumn(IsPrimaryKey = true,IsIdentity = true)]public int ID { get; set; }[SugarColumn(IsNullable = false)]public string Name { get; set; }public int Age { get; set; }[SugarColumn(SerializeDateTimeFormat = "yyyy-MM-dd")]public DateTime Birth { get; set; }}

准备完成后,你需要创建一个SqlSugarScope或者SqlSugarClient,
然后按照直接调用建表方法即可。(两个对象的创建方法相同)

//这里以SqlSugarScope为例,只需要将Connection对象作为初始化参数即可、
SqlSugarScope scope = new SqlSugarScope(new ConnectionConfig(){//创建数据表时可以直接在一个类似NUnit的测试类中来做,比较方便//但在实际的.NET CORE Web开发使用时,这些配置信息都要在StartUp中读取项目的配置文件来获得ConnectionString = "server=.;database=SqlSugarTest;uid=xxxxxx;pwd=xxxx",//SqlSugar默认支持多种数据库,你也不需要数据库连接的依赖DbType = DbType.SqlServer,//是否自动关闭连接池IsAutoCloseConnection = true}) ;

然后就可以直接调用建表方法了。

//InitTables有多重三多种重载,用的比较多的为
//以namespace名为参数,将其下的Model映射成表
//以Type类型为参数,可以指定一个或多个Model类
//也可以直接指定泛型
scope.CodeFirst.InitTables(typeof(Student));


先在NUnit测试单元里创建表,运行成功后数据库也出现了对应的表

进一步的实体关系配置也很简单,可以直接参考教程的这一章
https://www.donet5.com/home/doc?masterId=1&typeId=1188

一行代码创建实体

从数据库的表反向映射到Model上,就是文档中说的什么反向迁移。
这种也是我认为可能出现在我的工作中的情况,
毕竟一把梭的开发都是别人先设计好表,然后我们再根据表的结构创建Model,纯纯的数据容器,
好像业务代码就是纯粹的Sql编辑,整个API开发大部分时间都是个人肉Sql编辑器,没有自己的设计。。。。
让人感到是纯纯的板砖。。。。

当然砖还是要搬的,SqlSugar为我减少了板砖的步骤还是很让人高兴了
创建实体前,先确保你的数据库里有表

示例
先在数据库里随便建一张表

create table Person(Id int identity(1,1) primary key,Name varchar(20) Not Null,Age int,Address varchar(50))

然后再删除刚才生成的表,再到我们的测试单元中添加创建实体的语句

//只需要指定你需要的文件路径,即可生成到其路径下
scope.DbFirst.CreateClassFile("F:\\MicrosoftRepos\\SqlSugarTest\\SqlSugarTest\\Models");

运行测试单元后,即可看到生成的类了

2.不需要自定义DbContext更方便的使用

之前在学习EFCore的时候,DbContext是我们必要自己动手配的,你可以将一些需要的数据存放在不同的DbContext(比如根据用来区分不同数据库的数据什么的),
DbContext其实是一个类似hibernate的Session的组件,自定义肯定是更为灵活的,但不同DbContext也需要分别在包管理控制台去分开完成数据迁移(建表和建实体),有一点麻烦,
而如果使用SqlSugar提供的SqlSugarScope,它是个单例的组件,只需要在容器中注册一次就可以了,很方便的(SqlSugar也提供了非单例的SqlSugarClient用来满足更高级的一些需求)

常见的增删改查直接在SqlSuarScope对象中调用方法即可。

scope.Insertable<Person>(new Person() { Name = "张三", Age = 22, Address = "江西" });scope.Updateable<Person>(new Person() { Name = null, Age = 22, Address = null });scope.Deleteable<Person>(new Person() { Name = });
//查询同样是EFCore中的LINQ用法,非常的熟悉
scope.Queryable<Person>();

SqlSugar初体验|比EFCore更优秀相关推荐

  1. 一加6升级android p,一加6手机升级Android P初体验:系统更智能、操作更流畅!

    原标题:一加6手机升级Android P初体验:系统更智能.操作更流畅! 8月7日谷歌发布正式版Android P后,8月15日一加手机领先业界最先放出了一加6的Android P公测版.当然,这极其 ...

  2. 华为 android 创新,创新虽好,但更要实用:HUAWEI 华为 荣耀7i初体验

    创新虽好,但更要实用:HUAWEI 华为 荣耀7i初体验 2015-10-21 20:35:40 15点赞 6收藏 26评论 去年魅族一月一新机的节奏让我印象很深刻,到了2015年下半年华为荣耀也开启 ...

  3. 华为Mate30 Pro体验:一款交互体验更优秀的夜视仪

    作者 | 韩一冰 出品 | 网易手机&数码<易评机>栏目组 (油管&B站:惊奇科技 抖音:JQ163) 2019年9月26日,华为召开新品发布会,正式在国内带来了Mate3 ...

  4. 我的Citavi初体验,比mendeley更好使的软件

    Citavi初体验 参考文献引用格式: 在citation选项卡里,可以浏览自己想要的格式,也可以自定义格式. 中文文献import: 中文文献导入后,如果是直接导入的本地pdf文件,可能无法识别所有 ...

  5. 社交牛逼症研发小哥的校招和入职初体验

    今天校招story的主人公李同学,是今年入职百度的一个有着自来卷.网上聊天时喜欢发有趣表情.分享欲十足.乐观且有点社交牛逼症的研发小哥哥. 因为文章篇幅有限且要给大家分享更多干货,小哥哥的幽默乐观可能 ...

  6. node.js 初体验

    node.js 初体验 2011-10-31 22:56 by 聂微东, 174545 阅读, 118 评论, 收藏, 编辑 PS: ~ 此篇文章的进阶内容在为<Nodejs初阶之express ...

  7. deepin20自带c语言,deepin 20.1终于找到你-国产操作系统deepin之初体验

    deepin 20.1终于找到你-国产操作系统deepin之初体验 前几天刚安装了国产操作系统deepin20.1,使用了几天体验非常好,推荐大家安装使用.这款操作系统确实做的很用心,很不错.日常使用 ...

  8. Java开发 - Redis初体验

    前言 es我们已经在前文中有所了解,和es有相似功能的是Redis,他们都不是纯粹的数据库.两者使用场景也是存在一定的差异的,本文目的并不重点说明他们之间的差异,但会简要说明,重点还是在对Redis的 ...

  9. 比较文档相似度c语言,Doc2Vec,Word2Vec文本相似度 初体验。

    Doc2Vec,Word2Vec文本相似度 初体验. Doc2Vec,Word2Vec文本相似度 初体验. 参考资料 : https://radimrehurek.com/gensim/models/ ...

最新文章

  1. 美国无人驾驶立法提案将进行投票,有望解除一切封杀
  2. 生态和能力是国内自研操作系统发展的关键
  3. 带你读AI论文:SDMG-R结构化提取—无限版式小票场景应用
  4. Expected one result (or null) to be returned by selectOne(), but found: 7
  5. 模板方法模式的房间改造-组合查询
  6. Vim自动补全插件-NeoComplCache
  7. FRR BGP 协议分析 5 -- 路由更新(2)
  8. C++中的L和_T()
  9. 锐起无盘服务器缓存多少,锐起无盘缓存分析
  10. 智能优化算法——差分进化算法(Python实现)
  11. 基于Android的Word在线预览
  12. 交叉熵以及相对熵的理解
  13. 天翼对讲机写频软件_【对讲机的那点事】摩托罗拉GM950E/I 车载台如何编程?(上)...
  14. C语言小项目--扫雷小游戏
  15. JavaSE-day01
  16. 盗版升级win10仍是盗版
  17. clickHouse副本和同步机制
  18. 脚本防止电脑自动锁屏
  19. 百度、阿里、小米决战智能音箱
  20. 排序算法-6-归并排序

热门文章

  1. 互联网金融是唐僧肉,可大圣已归来
  2. 海岛大亨6图像处理错误_10种摄影错误,以及如何避免这些问题
  3. 计算机房承重载荷,承重能力的简易计算
  4. Channel Pruning for Accelerating Very Deep Neural Networks
  5. 使用计算机提高办公效率,工作效率提升 篇一:提高办公效率的13款好用软件
  6. 云服务中消灭小黄图的大宝剑---X次元口袋
  7. jQuery生日蛋糕蜡烛动画js特效
  8. 社保挂靠在人事外包公司名下可以吗
  9. 密码学理论02:完善加密(Perfectly secret encryption)
  10. 小雅深访 |富国朱少醒最完整的投资逻辑(2017年12月)