<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          .NET Core 3.0 MVC 中使用 SqlSugar ORM框架

          共 4692字,需瀏覽 10分鐘

           ·

          2020-10-26 18:14

          轉(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 -


          瀏覽 39
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国内自拍三级 | 国产福利激情 | 波多野结衣一区二区三区中文字幕 | 色秘 乱码一区二区三区男奴-百度 | 特黄AAAAAAA免费无码 |