介绍

SqlSugar 是一款简单易用的ORM ,在国内市场占有率也比较高,

在今年10月份官网改版后  提供了完整的服务,让您的项目没有后顾之忧

下载地址 :https://github.com/sunkaixuan/SqlSugar

1、创建MVC项目

打开VS2019及以上版本 ,然后新建一个Mvc项目,默认MVC是不支持路由的,需要在Startup.cs里面加入

app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute
(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute
("areaRoute", "{area:exists}/{controller=Admin}/{action=Index}/{id?}");
});

然后删除自带的Pages

在根目录创建Controllers文件夹和Views文件夹 ,创建HomerController.cs和 Index.cshtml

2、配置IOC

自带的IOC使用非常简单 ,我们这以Auface ioc为例子讲解

2.1 安装Nuget

Autofac

Autofac.Extensions.DependencyInjection

2.2 修改Program

public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
} public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())//添加这一行
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}

  

2.3 修改Startup

public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddControllers().AddControllersAsServices();//-----------------添加这一行
} public void ConfigureContainer(ContainerBuilder builder) //----------------添加这个方法
{
builder.RegisterType<OrderDal>().InstancePerLifetimeScope();
var webAssemblytype = typeof(Program).Assembly;
builder.RegisterAssemblyTypes(webAssemblytype).PropertiesAutowired();
}

3、编写控制器

public class HomeController : Controller
{
public OrderDal order { get; set; }//定义他就能注入了 public IActionResult Index()
{
var list = order.GetList();
return View();
}
}

  

4、编写 逻辑层代码 OrderDal

4、1 创建数据库仓储

public class Repository<T> : SimpleClient<T> where T : class, new()
{
public Repository(ISqlSugarClient context = null) : base(context)
{
if (context == null)
{
base.Context = new SqlSugarClient(new ConnectionConfig()
{
DbType = SqlSugar.DbType.SqlServer,
InitKeyType = InitKeyType.Attribute,
IsAutoCloseConnection = true,
ConnectionString = Config.ConnectionString
});
}
} /// <summary>
/// 扩展方法,自带方法不能满足的时候可以添加新方法
/// </summary>
/// <returns></returns>
public List<T> GetDeleteList()
{
return Context.Queryable<T>().Where(" isdeleted=1 ").ToList();
}
}

4.2 使用仓储

就这样OrderDal就编写完成了

public class  OrderDal: Repository<Order>
{
//创建OrderItem
public Repository<OrderItem> OrderItem => new Repository<OrderItem>(base.Context); public List<OrderItem> GetOrderItems()
{
return OrderItem.GetList(); //使用OrderItem
} public List<Order> GetOrders()
{
return base.GetList(); //使用自已的仓储方法
}
}

    

5、完成代码启动项目

上面简简单单几行就完成了一个IOC+仓储的 例子

SqlSugar仓储自带的方法有很多 ,基本常用开发,不能满足的在 Repository中添加仓储方法

var data1 = base.GetById(1);
var data2 = base.GetList();
var data3 = base.GetList(it => it.Id == 1);
var data4 = base.GetSingle(it => it.Id == 1);
var p = new PageModel() { PageIndex = 1, PageSize = 2 };
var data5 = base.GetPageList(it => it.Name == "xx", p);
Console.Write(p.PageCount);
var data6 = base.GetPageList(it => it.Name == "xx", p, it => it.Name, OrderByType.Asc);
Console.Write(p.PageCount);
List<IConditionalModel> conModels = new List<IConditionalModel>();
conModels.Add(new ConditionalModel(){FieldName="id",ConditionalType=ConditionalType.Equal,FieldValue="1"});//id=1
var data7 = base.GetPageList(conModels, p, it => it.Name, OrderByType.Asc);
base.AsQueryable().Where(x => x.Id == 1).ToList(); //插入
base.Insert(insertObj);
base.InsertRange(InsertObjs);
var id = base.InsertReturnIdentity(insertObj);
base.AsInsertable(insertObj).ExecuteCommand(); //删除
base.Delete(insertObj);
base.DeleteById(1);
base.DeleteById(new int[] { 1, 2 });
base.Delete(it => it.Id == 1);
base.AsDeleteable().Where(it => it.Id == 1).ExecuteCommand(); //更新
base.Update(insertObj);
base.UpdateRange(InsertObjs);
base.Update(it => new Order() { Name = "a", }, it => it.Id == 1);
base.AsUpdateable(insertObj).UpdateColumns(it=>new { it.Name }).ExecuteCommand();

自带IOC使何配置

上面使用是Auface 实现的MVC,如果我们要使用自带的MVC怎么办?

1、配置IOC,非常简单 就几行代码

public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages(); services.AddScoped<OrderDal>();//添加这2行
services.AddDirectoryBrowser();//添加这2行
}

2、使用IOC ,通过构造函数进行注入

public class HomeController : Controller
{
public OrderDal order { get; set; } public HomeController(OrderDal order)
{
this.order = order;
}
public IActionResult Index()
{
var list = order.GetList();
return View();
}
}

   

SqlSugar ORM 下载源码下载 :

https://github.com/sunkaixuan/SqlSugar

.Net Core 3.0 MVC 中使用 SqlSugar ORM框架的更多相关文章

  1. ASP.NET Core 5.0 MVC中的 Razor 页面 介绍

    Razor 是一个用于将基于服务器的代码嵌入到网页中的标记语法. Razor语法由 Razor 标记.c # 和 HTML 组成. 通常包含 Razor 的文件的扩展名 cshtml Razor 语法 ...

  2. ASP.NET Core 5.0 MVC中的视图分类——布局视图、启动视图、具体视图、分部视图

    一.创建MVC应用程序 创建后的项目 二.(全局性)启动视图 _ViewStart.cshtml 顾名思义,就是在View开始执行之前执行,而且是每一个View, 它的预设内容是 @{ Layout ...

  3. ASP.Net Core 5.0 MVC中AOP思想的体现(五种过滤器)并结合项目案例说明过滤器的用法

    执行顺序 使用方法,首先实现各自的接口,override里面的方法, 然后在startup 类的 ConfigureServices 方法,注册它们. 下面我将代码贴出来,照着模仿就可以了 IActi ...

  4. 记SqlSugar ORM框架之找不到主键问题

    前端时间在.NetCore项目中使用SqlSugar ORM框架(引用sqlSugarCore依赖包)的时候遇到了一个奇葩问题:对表进行数据更新操作的时候,报错 “ You cannot have n ...

  5. ASP.NET Core 2.0 MVC项目实战

    一.前言 毕业后入职现在的公司快有一个月了,公司主要的产品用的是C/S架构,再加上自己现在还在学习维护很老的delphi项目,还是有很多不情愿的.之前实习时主要是做.NET的B/S架构的项目,主要还是 ...

  6. .net core 2.0 mvc 获取配置信息

    mvc_core_config *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 ...

  7. ASP.NET Core 3.0 WebApi中使用Swagger生成API文档简介

    参考地址,官网:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view ...

  8. asp.net core 3.0 MVC JSON 全局配置

    asp.net core 3.0 MVC JSON 全局配置 System.Text.Json(default) startup配置代码如下: using System.Text.Encodings. ...

  9. ASP.NET CORE 1.0 MVC API 文档用 SWASHBUCKLE SWAGGER实现

    from:https://damienbod.com/2015/12/13/asp-net-5-mvc-6-api-documentation-using-swagger/ 代码生成工具: https ...

随机推荐

  1. Linux下用户的创建与删除

    我们在Linux下创建用户主要有两种方式:adduser和useradd,它们的区别以及主要用法如下: adduser adduser的用法很简单,只需adduser+username即可,如下: s ...

  2. 掌握Rabbitmq几个重要概念,从一条消息说起

    RabbitMQ 是功能强大的开源消息代理.根据官网称:也是使用量最广泛的消息队列.就像他的口号“Messaging that just works”,开箱即用使用简单,支持多种消息传输协议(AMQP ...

  3. Java Object类方法解析

    Java Object类方法解析 在Java中Object是所有类的父类,任何类都默认继承Object,其提供的方法主要有以下几种: registerNatives() hashCode和equale ...

  4. flutter实现可缩放可拖拽双击放大的图片功能

    flutter实现可缩放可拖拽双击放大的图片功能 可缩放可拖拽的功能,可实现图片或者其他widget的缩放已经拖拽并支持双击放大的功能 我们知道官方提供了双击缩放,但是不支持拖拽的功能,我们要实现向百 ...

  5. archaius(1) 概述

    archaius作为配置管理工具,内部主要定义了下几个模块: 配置源 配置源的主要功能是将配置从目标位置加载到内存中.详见:archaius源码分析之配置源 配置管理器 配置管理器的主要功能是管理内存 ...

  6. spring的aop编程(半自动、全自动)

    1.spring的半自动代理(从spring中获取代理对象) (1)spring中的通知类型 spring中aop的通知类型有五种: 前置:在目标方法执行前实施加强 后置:在目标方法执行后实施加强 环 ...

  7. Elasticsearch(2):索引详谈

      在上一篇博客中,介绍了ES中的一些核心概念和ES.Kibana安装方法.本节开始,我们从索引开始来学习ES的操作方法.   1 创建索引¶   创建一个索引的方法很简单,在Kibana中运行下行请 ...

  8. 秋天的第一份“干货” I Referer 防盗链,为什么少了个字母 R?

    Referer 为什么叫 Referer?它代表什么意思?在诸多防盗链竞争中它有什么优势? 今天,在聊 Referer 防盗链之前,先来聊聊我们在现实生活中常常碰到的推荐人(Referrer)信息. ...

  9. Spring Boot第四弹,一文教你如何无感知切换日志框架?

    持续原创输出,点击上方蓝字关注我吧 目录 前言 Spring Boot 版本 什么是日志门面? 如何做到无感知切换? 如何切换? 引入依赖 指定配置文件 日志如何配置? 总结 前言 首先要感谢一下读者 ...

  10. 引用类型之Object

    引用类型 引用类的值(对象)是引用类型的一个实例.在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起. 对象是某个特定引用类型的实例.新对象是使用new操作符后跟一个构造函数 ...