.Net Core 3.0 MVC 中使用 SqlSugar ORM框架
介绍
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框架的更多相关文章
- ASP.NET Core 5.0 MVC中的 Razor 页面 介绍
Razor 是一个用于将基于服务器的代码嵌入到网页中的标记语法. Razor语法由 Razor 标记.c # 和 HTML 组成. 通常包含 Razor 的文件的扩展名 cshtml Razor 语法 ...
- ASP.NET Core 5.0 MVC中的视图分类——布局视图、启动视图、具体视图、分部视图
一.创建MVC应用程序 创建后的项目 二.(全局性)启动视图 _ViewStart.cshtml 顾名思义,就是在View开始执行之前执行,而且是每一个View, 它的预设内容是 @{ Layout ...
- ASP.Net Core 5.0 MVC中AOP思想的体现(五种过滤器)并结合项目案例说明过滤器的用法
执行顺序 使用方法,首先实现各自的接口,override里面的方法, 然后在startup 类的 ConfigureServices 方法,注册它们. 下面我将代码贴出来,照着模仿就可以了 IActi ...
- 记SqlSugar ORM框架之找不到主键问题
前端时间在.NetCore项目中使用SqlSugar ORM框架(引用sqlSugarCore依赖包)的时候遇到了一个奇葩问题:对表进行数据更新操作的时候,报错 “ You cannot have n ...
- ASP.NET Core 2.0 MVC项目实战
一.前言 毕业后入职现在的公司快有一个月了,公司主要的产品用的是C/S架构,再加上自己现在还在学习维护很老的delphi项目,还是有很多不情愿的.之前实习时主要是做.NET的B/S架构的项目,主要还是 ...
- .net core 2.0 mvc 获取配置信息
mvc_core_config *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 ...
- ASP.NET Core 3.0 WebApi中使用Swagger生成API文档简介
参考地址,官网:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view ...
- asp.net core 3.0 MVC JSON 全局配置
asp.net core 3.0 MVC JSON 全局配置 System.Text.Json(default) startup配置代码如下: using System.Text.Encodings. ...
- 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 ...
随机推荐
- 时不时刷刷BOSS 看看技术需求
5.熟悉Java,熟悉spring,rose等常见的web开发框架优先. 岗位要求:1. 大学本科及以上学历,计算机软件相关专业毕业:2. 3年及以上Java及Web系统设计和开发经验:3. 扎实的数 ...
- 一个提高N倍系统新能的编程点,却总是被普通开发们遗忘
位运算这个概念并不陌生,大多数程序员在进入这个领域的时候或多或少都接触过位运算,估计当时都写过不少练习题的. 位运算本身不难,困难的是大家没有学会在系统设计时用上它,提高系统性能,增加你的不可替代性. ...
- SSM框架整合 IDEA_Maven
首先是配置web的web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app versio ...
- springboot maven项目运行常见报错 及ajax请求报错
如图所示 tomcat运行后直接停止,也不报错 原因:我的原因是controller路径配置重名或者service没有配置@Service 遇见这错找了好久问题,网上也搜不到,特此记录一下 问题2 a ...
- 从GitHub建站迁移到服务器(Java环境)
一.购买域名和服务器 域名:阿里云:lookabc.cn 服务器:腾讯云,学生价格便宜 二.域名解析 注意:由于域名和服务器不在同一家,需要域名迁入和迁出 三.搭建服务器环境 1.下载xftp6和xs ...
- 朴素贝叶斯分类器Naive Bayes
优点Naive Bayes classifiers tend to perform especially well in one of the following situations: When t ...
- Boost 信号与槽,获取槽函数返回值,使用占位参数传递信号携带的参数
test1: 展示了, 1 信号与槽的基本使用, 2 要获取槽函数的返回值时的注意事项 #if 1 /* 参考blog https://www.cnblogs.com/jiayayao/p/62 ...
- 灵感来袭,基于Redis的分布式延迟队列(续)
背景 上一篇(灵感来袭,基于Redis的分布式延迟队列)讲述了基于Java DelayQueue和Redis实现了分布式延迟队列,这种方案实现比较简单,应用于延迟小,消息量不大的场景是没问题的,毕竟J ...
- 【漏洞复现】MSF添加ms17-010的exp脚本及攻击复现
原文地址:https://bbs.ichunqiu.com/thread-23115-1-1.html 本来今晚在准备复现最近的CVE-2017-11882,由于本人是小白一枚,不知道这么添加msf的 ...
- Arduino PID Library
Arduino PID Library by Brett Beauregard,contact: br3ttb@gmail.com What Is PID? PID是什么 From Wikipe ...