最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.net數(shù)據(jù)庫(kù)操作框架SqlSugar的簡(jiǎn)單入門

 更新時(shí)間:2021年04月28日 10:02:26   作者:果糖大數(shù)據(jù)科技  
這篇文章主要介紹了.net數(shù)據(jù)庫(kù)操作框架SqlSugar的簡(jiǎn)單入門,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下

介紹

SqlSugar是一款 老牌 .NET數(shù)據(jù)庫(kù)操作框架,由果糖大數(shù)據(jù)科技團(tuán)隊(duì)維護(hù)和更新 ,Github star數(shù)僅次于EF 和 Dapper

優(yōu)點(diǎn): 簡(jiǎn)單易用、功能齊全、高性能、輕量級(jí)、服務(wù)齊全、有專業(yè)技術(shù)支持一天18小時(shí)服務(wù)

支持?jǐn)?shù)據(jù)庫(kù):MySql、SqlServer、Sqlite、Oracle 、 postgresql、達(dá)夢(mèng)、人大金倉(cāng)

框架新功能

最新穩(wěn)定版本5.0.2.8 ,發(fā)布后1個(gè)月時(shí)間NUGET下載量達(dá)到5000的版本,用戶使用也相當(dāng)滿意

而在穩(wěn)定版本的基礎(chǔ)上又布了5.0.2.9版本

加入3大新功能

1. 配置查詢 

解決了大量字典表和簡(jiǎn)單就為取一個(gè)name 就要寫聯(lián)表的問題,讓單表查詢解決一切

2.多租戶+倉(cāng)儲(chǔ)+自動(dòng)分配

3.行轉(zhuǎn)列

1、配置查詢

解決了大量字典表和簡(jiǎn)單就為取一個(gè)name 就要寫聯(lián)表的問題,讓單表查詢解決一切

字典表我相信大家都全用到,他們可以方便的存儲(chǔ)性別、學(xué)歷、崗位等 一串?dāng)?shù)據(jù) 并進(jìn)行TypeId進(jìn)行區(qū)分

1.1 創(chuàng)建測(cè)試數(shù)據(jù)

創(chuàng)建一個(gè)字典實(shí)體

public class DataDictionary
{
    public string Code { get; set; }
    public string Name { get; set; }
    public string Type { get; set; }
}

創(chuàng)建字典表并向里面插入測(cè)試數(shù)據(jù)  

var db = GetInstance();
            List<DataDictionary> datas = new List<DataDictionary>();
            datas.Add(new DataDictionary() { Code="1", Name="男",Type="sex" });
            datas.Add(new DataDictionary() { Code = "2", Name = "女", Type = "sex" });
            datas.Add(new DataDictionary() { Code = "1", Name = "南通市", Type = "city" });
            datas.Add(new DataDictionary() { Code = "2", Name = "蘇州市", Type = "city" });
            datas.Add(new DataDictionary() { Code = "1", Name = "江蘇省", Type = "province" });
            datas.Add(new DataDictionary() { Code = "2", Name = "湖南省", Type = "province" });
 
            db.CodeFirst.InitTables<DataDictionary>();//這樣就能根據(jù)實(shí)體建表了
            db.Insertable(datas).ExecuteCommand();//這樣就能把數(shù)據(jù)插進(jìn)數(shù)據(jù)庫(kù)了<br>

在建一個(gè)Person表 

public class Person
{
    //數(shù)據(jù)庫(kù)字段
    [SqlSugar.SugarColumn(IsPrimaryKey =true,IsIdentity =true)]
    public int Id { get; set; }
    public string Name { get; set; }
    public int SexId { get; set; }
    public int CityId { get; set; }
    public int ProvinceId { get; set; }
 
    //非數(shù)據(jù)庫(kù)字段
    [SqlSugar.SugarColumn(IsIgnore =true)]
    public string SexName { get; set; }
    [SqlSugar.SugarColumn(IsIgnore = true)]
    public string CityName { get; set; }
    [SqlSugar.SugarColumn(IsIgnore = true)]
    public string ProviceName { get; set; }
} 

1.2 傳統(tǒng)字典聯(lián)表實(shí)現(xiàn)缺點(diǎn)

如果我們要將Person中的非數(shù)據(jù)字典查詢出來那么我們就需要寫有2種實(shí)現(xiàn)方式

1.連表或者子查詢 (缺點(diǎn) 寫起來很浪費(fèi)時(shí)間)

2.將字典存到內(nèi)存,通過內(nèi)存賦值 (缺點(diǎn) 字典表超過1000條以上性能很差 ,并且不能排序,或者LIKE)

下面介紹通過SqlSugar的配置查詢解決上2面?zhèn)€難題

1.3 配置表簡(jiǎn)化字典聯(lián)表

配置字典表

if (!db.ConfigQuery.Any())
   {
                var types= db.Queryable<DataDictionary>().Select(it => it.Type).Distinct().ToList();
                foreach (var type in types)
                {
                    db.ConfigQuery.SetTable<DataDictionary>(it => it.Code, it => it.Name, type, it => it.Type == type);
                }
                //如果其中Code都是唯一值可以按 1.4中的用法使用循環(huán)都不要
}

配置完我們查詢就會(huì)很方便了

   var res=db.Queryable<Person>().Select(it => new Person()
   {
                 Id=it.Id.SelectAll(),
                 SexName=it.SexId.GetConfigValue<DataDictionary>("sex"),
                 ProvinceName = it.ProvinceId.GetConfigValue<DataDictionary>("province"),
                 CityName = it.CityId.GetConfigValue<DataDictionary>("city"),
   }).ToList();
 
//也支持支持寫在Where或者Orderby 

1.4 簡(jiǎn)單聯(lián)表查詢也可以配置

db.ConfigQuery.SetTable<Order>(it => it.Id, it => it.Name);//配置Order<br>
var list3 = db.Queryable<OrderItem>().Select(it => new OrderItem
{
        ItemId = it.ItemId.SelectAll(),
        OrderName = it.OrderId.GetConfigValue<Order>() //查詢的時(shí)候直接用
}).ToList();

 總結(jié):配置表查詢的方式可以大大降低重復(fù)聯(lián)表問題,并且配置好后基本就不要寫JOIN了 

2、多租戶+倉(cāng)儲(chǔ)+自動(dòng)分配

SqlSugar多租戶是通過ConfigId進(jìn)行識(shí)別連接哪個(gè)庫(kù),新版本添加了實(shí)體配置ConfigId

[TenantAttribute("1")]
  public class C1Table
  {
     public string Id { get; set; }
  }
 
  [TenantAttribute("2")]
  public class C2Table
  {
      public string Id { get; set; }
  }

下面我們倉(cāng)儲(chǔ)就可以通過實(shí)體配置自動(dòng)識(shí)別是連接哪個(gè)庫(kù)

public class Repository<T> : SimpleClient<T> where T : class, new()
    {
        public Repository(ISqlSugarClient context = null) : base(context)//注意這里要有默認(rèn)值等于null
        {
            if (context == null)
            {
                var db = new SqlSugarClient(new List<ConnectionConfig> {
                                                    new ConnectionConfig()
                                                {
                                                    ConfigId="1",
                                                    DbType = SqlSugar.DbType.SqlServer,
                                                    IsAutoCloseConnection = true,
                                                    ConnectionString = Config.ConnectionString
                                                },
                                                    new ConnectionConfig()
                                                {
                                                    ConfigId="2",
                                                    DbType = SqlSugar.DbType.SqlServer,
                                                    IsAutoCloseConnection = true,
                                                    ConnectionString = Config.ConnectionString2
                                                }
                });
                base.Context = db;
                var configId = typeof(T).GetCustomAttribute<TenantAttribute>().configId;
                db.ChangeDatabase(configId);
            }
        }
 
        /// <summary>
        /// 擴(kuò)展方法,自帶方法不能滿足的時(shí)候可以添加新方法
        /// </summary>
        /// <returns></returns>
        public List<T> CommQuery(string sql)
        {
            //base.Context.Queryable<T>().ToList();可以拿到SqlSugarClient 做復(fù)雜操作
            return base.Context.Queryable<T>().Where(sql).ToList();
        }
 
    }

新版本還添加了切換倉(cāng)儲(chǔ)功能

public class C1Service : Repository<C1Table>
{
    public void Test()
    {
        base.AsTenant().BeginTran();
 
        base.GetList(); //調(diào)用內(nèi)部倉(cāng)儲(chǔ)方法
        base.ChangeRepository<Repository<C2Table>>().GetList();//調(diào)用外部倉(cāng)儲(chǔ)
 
        base.AsTenant().CommitTran();
    }
}

3、行列互轉(zhuǎn)功能 

第一個(gè)參數(shù) 列名、第二個(gè)參數(shù) 頭行名、第三個(gè)參數(shù) 值

var test06 = db.Queryable<Order>()
                   .ToPivotTable(it => it.Id, it => it.Name, it => it.Sum(x => x.Price));//返回Datatable
 
 var test07 = db.Queryable<Order>()
            .ToPivotList(it => it.Id, it => it.Name, it => it.Sum(x => x.Price));//返回List<dynamic><br>
var test08 = db.Queryable<Order>()
            .ToPivotJson(it => it.Id, it => it.Name, it => it.Sum(x => x.Price));//返回Json

.NET數(shù)據(jù)庫(kù)框架源碼  

官網(wǎng)地址:  https://www.donet5.com/Home/Doc

以上就是.net數(shù)據(jù)庫(kù)操作框架SqlSugar的簡(jiǎn)單入門的詳細(xì)內(nèi)容,更多關(guān)于.net數(shù)據(jù)庫(kù)操作框架SqlSugar的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Visual Studio 2017 RC 初探安裝教程

    Visual Studio 2017 RC 初探安裝教程

    這篇文章主要為大家詳細(xì)介紹了Visual Studio 2017 RC初探安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • .NET Windows 多線程thread編程

    .NET Windows 多線程thread編程

    .net里使用線程,用thread類,定義線程,啟動(dòng),銷毀,全部包括在這個(gè)類里,定義一個(gè)線程,必須指定這個(gè)線程的函數(shù),也就是這個(gè)線程是做什么的
    2012-12-12
  • asp.net獲取select值的方法

    asp.net獲取select值的方法

    今天有個(gè)朋友問我如何使用asp.net獲取select值,以為很簡(jiǎn)單的問題,結(jié)果發(fā)現(xiàn)自己也不知道于是搜索中發(fā)現(xiàn)了下面的這個(gè)不錯(cuò)的例子,在此與大家分享
    2013-09-09
  • ASP.NET(C#)中操作SQLite數(shù)據(jù)庫(kù)實(shí)例

    ASP.NET(C#)中操作SQLite數(shù)據(jù)庫(kù)實(shí)例

    最近項(xiàng)目中有使用到SQLite數(shù)據(jù)庫(kù),于是查找資料,編寫了一個(gè)ASP.NET基于C#語(yǔ)言的SQLite數(shù)據(jù)庫(kù)操作實(shí)例.大家看代碼就可以看懂了,和以往使用ADO.NET操作SQL數(shù)據(jù)庫(kù)類似.
    2009-12-12
  • axp.net ScriptManager的簡(jiǎn)單用法

    axp.net ScriptManager的簡(jiǎn)單用法

    scriptManager的結(jié)構(gòu),參數(shù),屬性說明
    2008-11-11
  • .Net使用RabbitMQ實(shí)現(xiàn)短信密碼重置的操作步驟

    .Net使用RabbitMQ實(shí)現(xiàn)短信密碼重置的操作步驟

    在C#開發(fā)中,通過RabbitMQ實(shí)現(xiàn)短信服務(wù)可增強(qiáng)應(yīng)用的消息通知能力,本文介紹了使用RabbitMQ發(fā)送短信的步驟,包括安裝RabbitMQ客戶端庫(kù)、創(chuàng)建連接和通道、實(shí)現(xiàn)短信發(fā)送服務(wù)、配置RabbitMQ消費(fèi)者,并集成到用戶密碼重置流程中,通過示例代碼,可以快速理解整個(gè)實(shí)現(xiàn)過程
    2024-09-09
  • ASP.NET小結(jié)之MVC, MVP, MVVM比較以及區(qū)別(一)

    ASP.NET小結(jié)之MVC, MVP, MVVM比較以及區(qū)別(一)

    MVC, MVP和MVVM都是用來解決界面呈現(xiàn)和邏輯代碼分離而出現(xiàn)的模式。以前只是對(duì)它們有部分的了解,沒有深入的研究過,對(duì)于一些里面的概念和區(qū)別也是一知半解?,F(xiàn)在一邊查資料,并結(jié)合自己的理解,來談一下對(duì)于這三種模式思想的理解,以及它們的區(qū)別。歡迎各位高手拍磚。
    2014-05-05
  • Asp.net之TextBox只允許輸入數(shù)字的方法總結(jié)

    Asp.net之TextBox只允許輸入數(shù)字的方法總結(jié)

    Asp.net之TextBox只允許輸入數(shù)字的方法總結(jié),需要的朋友可以參考一下
    2013-02-02
  • .NET操作Excel實(shí)例分享

    .NET操作Excel實(shí)例分享

    這篇文章主要介紹了.NET操作Excel實(shí)例,有需要的朋友可以參考一下
    2014-01-01
  • .Net Core學(xué)習(xí)教程之在Mvc中簡(jiǎn)單的使用日志組件

    .Net Core學(xué)習(xí)教程之在Mvc中簡(jiǎn)單的使用日志組件

    這篇文章主要給大家介紹了關(guān)于.Net Core學(xué)習(xí)教程之在Mvc中簡(jiǎn)單使用日志組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06

最新評(píng)論

民乐县| 基隆市| 富宁县| 庆云县| 海伦市| 繁峙县| 山西省| 民权县| 阿瓦提县| 平塘县| 松江区| 中卫市| 吴堡县| 祁门县| 资溪县| 屏东县| 依兰县| 冕宁县| 双流县| 沧源| 林州市| 禄丰县| 奇台县| 馆陶县| 新宾| 德惠市| 黄山市| 兰西县| 行唐县| 保康县| 曲麻莱县| 玉龙| 垦利县| 浦城县| 玛多县| 曲松县| 广宗县| 宁国市| 封开县| 镇宁| 辉南县|