2020-11-01

.NET CORE 下如何使用国产数据库进行 开发

主流国产数据库

随着贸易战的升级 ,自主研发和知识产权也是一个大的趋势,达梦和人大金仓是国产数据库中比较主流的

 

1、达梦数据库

更接近Oracle,更偏向自主研发,对开发人员友好度不如金仓 

达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新、简洁实用的理念,历经五年匠心打磨,推出的新一代自研数据库。DM8吸收借鉴当前先...

下载地址:

决策支持系统等量身打造的承载数据库,目前功能性能已全面升级,是真正具有高成熟度的数据库产品。

下载地址:

https://www.kingbase.com.cn/index/service.html

安装步骤:

1.选择 金仓数据库管理系统

2、选择 安装文件包和授权文件包 

 

ORM 框架选择

既然是国产数据库那么数据库ORM也应该选择国产ORM ,SqlSugar ORM框架是一直更新到现在诞生最早的 国产ORM,出身于2014年距离现在有6年多的时间

源码和国产数据库操作DEMO下载地址

https://github.com/sunkaixuan/SqlSugar 

 

创建项目

创建.NET Core项目

Nuget 只需要安装SqlSugarCore 就可以操作我们的国产数据库了

 

创建数据库对象

连接字符串格式

达梦  PORT=5236;DATABASE=DAMENG;HOST=localhost;PASSWORD=SYSDBA;USER ID=SYSDBA

人大金仓 Server=127.0.0.1;Port=54321;UID=SYSTEM;PWD=system;database=SQLSUGAR4XTEST1

具体代码如下:


var Db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.Dm,//达梦数据库 IsAutoCloseConnection = true, InitKeyType = InitKeyType.Attribute, AopEvents = new AopEvents() { OnLogExecuting = (sql, p) => { Console.WriteLine(sql); } } });
 var Db2 = new SqlSugarClient(new ConnectionConfig()   {    ConnectionString = Config.ConnectionString,    DbType = DbType.Kdbndp,//人大金仓数据库    IsAutoCloseConnection = true,    InitKeyType = InitKeyType.Attribute,    AopEvents = new AopEvents()    {     OnLogExecuting = (sql, p) =>     {      Console.WriteLine(sql);     }    }   });

 

创建实体

 [SugarTable("STudent")] public class Student {  [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]  public int Id { get; set; }  public int? SchoolId { get; set; }  public string Name { get; set; }  public DateTime? CreateTime { get; set; }  [SugarColumn(IsIgnore=true,NoSerialize =true)]  public int TestId { get; set; } }

    

使用ORM操作数据库

具体用法和其它数据库操作一模一样

//查询
var getAll = db.Queryable<Student>().ToList();//查询所有var getFirst = db.Queryable<Student>().First(it=>it.Id=1);//查询单条var getAllNoLock = db.Queryable<Student>().With(SqlWith.NoLock).ToList();//SqlServer里面的withnolockvar getByPrimaryKey = db.Queryable<Student>().InSingle(2);//根据主键查询var sum = db.Queryable<Student>().Sum(it=>it.Id);//查询总和var isAny = db.Queryable<Student>().Where(it=>it.Id==-1).Any();//是否存在var isAny2 = db.Queryable<Student>().Any(it => it.Id == -1);var getListByRename = db.Queryable<School>().AS("Student").ToList();var getByWhere = db.Queryable<Student>().Where(it => it.Id == 1 || it.Name == "a").ToList();var list= db.Queryable<Student>().AS("student2019").ToList();//select * from student2019var list2 = db.Queryable<Order>().Where(it =>it.Name.Contains("jack")).ToList();//模糊查询

 

返回List

List<Student> list = db.Queryable<Student>().ToList();

  

返回第一个实体

Student item = db.Queryable<Student>().First(it=>it.Id==1);

 

返回DataTable

DataTable dataTable = db.Queryable<Student>().Select(it => it.Id).ToDataTable();

 

返回Json

var json = db.Queryable<Student>().ToJson();


返回数组

List<int> listInt=db.Queryable<Student>().Select(it => it.Id).ToList();


返回匿名对象

var dynamic = db.Queryable<Student>().Select<dynamic>().ToList();

 

返回到新类

var viewModel = db.Queryable<Student, School, DataTestInfo>((st, sc, di) => new JoinQueryInfos(JoinType.Left, st.SchoolId == sc.Id,JoinType.Left, st.Name == di.String)).Select<ViewModelStudent>().ToList();

 

多表返回匿名对象

var newDynamic = db.Queryable<Student, School, DataTestInfo>((st, sc, di) => new JoinQueryInfos(JoinType.Left, st.SchoolId == sc.Id,JoinType.Left, st.Name == di.String)) .Select((st,sc,di)=>new { name=st.Name,scid=sc.Id }).ToList();

 

手动返回到新类

var newClass= db.Queryable<Student, School, DataTestInfo>((st, sc, di) => new JoinQueryInfos(JoinType.Left, st.SchoolId == sc.Id,JoinType.Left, st.Name == di.String)) .Select((st,sc,di)=>new ClassName{ name=st.Name,scid=sc.Id }).ToList();

 

多表查一表

var oneClass = db.Queryable<Order, OrderItem, Custom>((o, i, c) => new JoinQueryInfos(JoinType.Left, o.Id == i.OrderId,JoinType.Left, o.CustomId == c.Id)).Select((o, i, c) => c).ToList();

 

多表返回2表

var twoClass = db.Queryable<Order, OrderItem, Custom>((o, i, c) => new JoinQueryInfos(JoinType.Left, o.Id == i.OrderId,JoinType.Left, o.CustomId == c.Id)).Select((o, i, c) => new { o,i}).ToList()

 

返回字典集合

List<Dictionary<string, object>> ListDic = db.Queryable<Student, School, DataTestInfo>((st, sc, di) => new JoinQueryInfos(JoinType.Left, st.SchoolId == sc.Id,JoinType.Left, st.Name == di.String)).Select<ExpandoObject>().ToList().Select(it => it.ToDictionary(x => x.Key, x => x.Value)).ToList(); ; 

 

删除
db.Deleteable<Student>().In(1).ExecuteCommand();

 

更新
var result= db.Updateable(updateObj).ExecuteCommand();

 

插入
db.Insertable(insertObj).ExecuteCommand(); 

 

除了 增删查改,SqlSugar ORM 还支持很多功能,就不一一演示,一篇文章介绍不完。 

 

源码 DEMO下载地址:

https://github.com/sunkaixuan/SqlSugar

谢谢支持

原文转载:http://www.shaoqun.com/a/485885.html

跨国采购网:https://www.ikjzd.com/w/2270.html

易速:https://www.ikjzd.com/w/2389

eprice:https://www.ikjzd.com/w/1325


主流国产数据库随着贸易战的升级,自主研发和知识产权也是一个大的趋势,达梦和人大金仓是国产数据库中比较主流的1、达梦数据库更接近Oracle,更偏向自主研发,对开发人员友好度不如金仓达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新、简洁实用的理念,历经五年匠心打磨,推出的新一代自研数据库。DM8吸收借鉴当前先...下载地址:决策支持系统等量身打造的承载数据库,目前功能性能已全面升级,是
巴克莱银行:https://www.ikjzd.com/w/2775
stylenanda官网:https://www.ikjzd.com/w/1675.html
广州到长津冰雪大世界怎么走?广州长津冰雪大世界自驾车路线?:http://tour.shaoqun.com/a/29788.html
八角寨好玩?:http://tour.shaoqun.com/a/37658.html
意大利VAT申报注册事项及常见问题解答(附VAT计算案例)!:https://www.ikjzd.com/home/12822

No comments:

Post a Comment