sqlsugar mvc mysql_.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();

});

}

2.3 修改Startup

public void ConfigureServices(IServiceCollection services)

{

services.AddRazorPages();

services.AddControllers().AddControllersAsServices();//-----------------添加这一行

}

public void ConfigureContainer(ContainerBuilder builder) //----------------添加这个方法

{

builder.RegisterType().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 创建数据库仓储

nuget只需要引用一个dll文件,

.net 版本选择  sqlSugar

.net core版本选择 sqlSugarCor

public class Repository : SimpleClient 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

});

}

}

///

/// 扩展方法,自带方法不能满足的时候可以添加新方法

///

///

public List GetDeleteList()

{

return Context.Queryable().Where(" isdeleted=1 ").ToList();

}

}

4.2 使用仓储

就这样OrderDal就编写完成了

public class OrderDal: Repository

{

//创建OrderItem

public Repository OrderItem => new Repository(base.Context);

public List GetOrderItems()

{

return OrderItem.GetList(); //使用OrderItem

}

public List 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 conModels = new List();

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();//添加这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 下载源码下载 :

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLSugar是一种ORM(对象关系映射)工具,可以帮助我们更轻松地操作数据库。下面是在ASP.NET Core MVC使用SQLSugar进行多表查询的步骤: 1. 安装SQLSugar使用NuGet包管理器或通过命令行安装SQLSugar包。 2. 配置连接字符串 在appsettings.json文件配置数据库连接字符串,例如: ``` "ConnectionStrings": { "DefaultConnection": "Server=localhost;Database=databaseName;User Id=userId;Password=password;" } ``` 3. 配置SQLSugar实例 在Startup.cs文件的ConfigureServices方法添加以下代码来配置SQLSugar实例: ``` services.AddScoped<ISqlSugarClient>(provider => { var connectionString = Configuration.GetConnectionString("DefaultConnection"); var db = new SqlSugarClient(new ConnectionConfig { ConnectionString = connectionString, DbType = DbType.MySql, IsAutoCloseConnection = true, InitKeyType = InitKeyType.Attribute }); db.Aop.OnLogExecuting = (sql, pars) => { Console.WriteLine($"{sql} {string.Join(",", pars.Select(p => $"{p.ParameterName}={p.Value}"))}"); }; return db; }); ``` 这里使用了MySQL数据库,如果你使用的是其他类型的数据库,请根据需要进行修改。 4. 创建实体类 在Models文件夹下创建对应的实体类,例如: ``` public class Order { public int Id { get; set; } public int CustomerId { get; set; } public decimal TotalAmount { get; set; } public DateTime OrderDate { get; set; } } ``` ``` public class Customer { public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } } ``` 5. 进行多表查询 在Controller使用SQLSugar实例进行多表查询,例如: ``` public class OrderController : Controller { private readonly ISqlSugarClient _db; public OrderController(ISqlSugarClient db) { _db = db; } public IActionResult Index() { var orders = _db.Queryable<Order, Customer>((o, c) => o.CustomerId == c.Id) .Select((o, c) => new { o.Id, c.Name, o.TotalAmount, o.OrderDate }) .ToList(); return View(orders); } } ``` 这里的多表查询是在Order表和Customer表之间进行的,通过CustomerId和Id进行关联。查询返回的结果是一个匿名类型,包含了订单的Id、客户的姓名、订单的总金额、订单的日期等信息。最后,将查询结果传递给View进行显示。 以上就是使用SQLSugar在ASP.NET Core MVC进行多表查询的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值