.NET Core 3.0 MVC 中使用 SqlSugar ORM框架
轉(zhuǎn)自:孫凱旋 cnblogs.com/sunkaixuan/p/13853560.html
介紹
SqlSugar是一款簡(jiǎn)單易用的ORM ,在國內(nèi)市場(chǎng)占有率也比較高,
在今年10月份官網(wǎng)改版后? 提供了完整的服務(wù),讓您的項(xiàng)目沒有后顧之憂
下載地址 :https://github.com/sunkaixuan/SqlSugar
一、創(chuàng)建MVC項(xiàng)目
打開VS2019及以上版本 ,然后新建一個(gè)Mvc項(xiàng)目,默認(rèn)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
在根目錄創(chuàng)建Controllers文件夾和Views文件夾 ,創(chuàng)建HomerController.cs和 Index.cshtml
二、配置IOC?
自帶的IOC使用非常簡(jiǎn)單 ,我們這以Autofac? 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) //----------------添加這個(gè)方法
{
builder.RegisterType().InstancePerLifetimeScope();
var webAssemblytype = typeof(Program).Assembly;
builder.RegisterAssemblyTypes(webAssemblytype)
.PropertiesAutowired();
} 三、編寫控制器
public class HomeController : Controller
{
public OrderDal order { get; set; }//定義他就能注入了
public IActionResult Index()
{
var list = order.GetList();
return View();
}
}四、編寫 邏輯層代碼 OrderDal?
4、1、創(chuàng)建數(shù)據(jù)庫倉儲(chǔ)
nuget只需要引用一個(gè)dll文件,
.NET版本選擇? sqlSugar?
.NET Core版本選擇 sqlSugarCore
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
});
}
}
///
/// 擴(kuò)展方法,自帶方法不能滿足的時(shí)候可以添加新方法
///
///
public List GetDeleteList()
{
return Context.Queryable().Where(" isdeleted=1 ").ToList();
}
} 4.2、使用倉儲(chǔ)
就這樣OrderDal就編寫完成了
public class OrderDal: Repository
{
//創(chuàng)建OrderItem
public Repository OrderItem => new Repository(base.Context);
public List GetOrderItems()
{
return OrderItem.GetList(); //使用OrderItem
}
public List GetOrders()
{
return base.GetList(); //使用自已的倉儲(chǔ)方法
}
} 五、完成代碼啟動(dòng)項(xiàng)目
上面簡(jiǎn)簡(jiǎn)單單幾行就完成了一個(gè)IOC+倉儲(chǔ)的 例子
SqlSugar倉儲(chǔ)自帶的方法有很多 ,基本常用開發(fā),不能滿足的在 Repository中添加倉儲(chǔ)方法
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 實(shí)現(xiàn)的MVC,如果我們要使用自帶的MVC怎么辦?
1、配置IOC,非常簡(jiǎn)單 就幾行代碼
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddScoped();//添加這2行
services.AddDirectoryBrowser();//添加這2行
} 2、使用IOC ,通過構(gòu)造函數(shù)進(jìn)行注入
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?
- EOF -
