[开源] .Net 使用 ORM 访问 神舟通用数据库(神通)

前言

天津神舟通用数据技术有限公司(简称“神舟通用公司”),隶属于中国航天科技集团(CASC)。是国内从事数据库、大数据解决方案和数据挖掘分析产品研发的专业公司。公司获得了国家核高基科技重大专项重点支持,是核高基专项的牵头承担单位。自1993年在航天科技集团开展数据库研发以来,神通数据库已历经27年的发展历程。公司核心产品主要包括神通关系型数据库、神通KStore海量数据管理系统、神通商业智能套件等系列产品研发和市场销售。基于产品组合,可形成支持交易处理、MPP数据库集群、数据分析与处理等解决方案,可满足多种应用场景需求。产品通过了国家保密局涉密信息系统、公安部等保四级、军B +级等安全评测和认证。

随着华为、中兴事务,国产数据库市场相信是未来是趋势走向,纵观 .net core 整个圈子对国产神舟通用数据库(神通)的支持几乎为 0,今天我们使用 FreeSql ORM 来体验国产神舟通用数据库(神通)。

整体来讲,神舟通用数据库(神通)对 Oracle 语法有着 90% 的兼容性,但还有一些细节需要注意,FreeSql 对此做了优化进行了完美支持。

1、安装环境

数据库服务器:ShenTong7.0.8

下载地址:http://www.shentongdata.com/index.php/download/list-27

.NET版本:.net core 3.1

下载地址:https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install

开发机器 :windows 10

2、创建项目

我们以 console 类型项目试验 插入、删除、更新、查询 等功能,创建控制台项目,使用命令:

dotnet new console

dotnet add package FreeSql.Provider.ShenTong

dotnet add package FreeSql.Repository --version 1.6.0

3、创建实体模型

using System;
using FreeSql.DataAnnotations;public class User
{[Column(IsIdentity = true)]public long Id { get; set; }public string UserName { get; set; }public string PassWord { get; set; }public DateTime CreateTime { get; set; }
}

4、初始化 ORM

static IFreeSql fsql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.ShenTong,"HOST=192.168.164.10;PORT=2003;DATABASE=OSRDB;USERNAME=SYSDBA;PASSWORD=szoscar55;MAXPOOLSIZE=2").UseMonitorCommand(cmd => Trace.WriteLine($"线程:{cmd.CommandText}\r\n")).UseAutoSyncStructure(true) //自动创建、迁移实体表结构.UseNameConvert(NameConvertType.ToUpper).Build();

5、插入数据

var repo = fsql.GetRepository<User>();var user = new User { UserName = "shentong1", PassWord = "123" };
repo.Insert(user);

var users = new []
{new User { UserName = "shentong2", PassWord = "1234" },new User { UserName = "shentong3", PassWord = "12345" },new User { UserName = "shentong4", PassWord = "123456" }
};
repo.Insert(users);
//批量插入

6、更新数据

user.PassWord = "123123";
repo.Update(user);

7、查询数据

var one = fsql.Select<User>(1).First(); //查询一条数据var list = fsql.Select<User>().Where(a => a.UserName.StartsWith("shentong")).ToList();

8、删除数据

fsql.Delete<User>(1).ExecuteAffrows();fsql.Delete<User>().Where(a => a.UserName.StartsWith("shentong")).ExecuteAffrows();

结语

这篇文章简单介绍了在 .net core 3.1 环境中使用 FreeSql 对国产神舟通用数据库(神通)的访问,目前 FreeSql 还支持 .net framework 4.0 和  xamarin 平台上使用。

国产数据库未来是发展趋势,拥有自主权不受他人限制,我在好几个群里看到有人说公司正准备全面使用国产系统+国产数据库。

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

FreeSql 是 .NETCore/.NetFramework/Xamarin 平台下的 ORM 开源项目,支持 SqlServer/MySql/PostgreSQL/Oracle/Sqlite/达梦/人大金仓,还有神舟通用数据库(神通),未来还会接入更多的国产数据库支持。

源码地址:https://github.com/2881099/FreeSql

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对象的单数组表示(用单数组实现链表-不一样的链表实现)

对象的单数组表示 &#xff08;用单数组实现链表-不一样的链表实现&#xff09; #ifndef C11LEARN_SINGULARGROUPSREPRESENTOBJECTS_H #define C11LEARN_SINGULARGROUPSREPRESENTOBJECTS_H #include "cmath" #include "../tools/tool.h" template<typ…

图的建立-邻接矩阵表示(C语言)

代码如下: /* 图的邻接矩阵表示法 */#define MaxVertexNum 100 /* 最大顶点数设为100 */ #define INFINITY 65535 /* ∞设为双字节无符号整数的最大值65535*/ typedef int Vertex; /* 用顶点下标表示顶点,为整型 */ typedef int WeightType; /* 边的…

在 Xunit 中使用依赖注入

在 Xunit 中使用依赖注入Intro之前写过一篇 xunit 的依赖注入相关的文章&#xff0c;但是实际使用起来不是那么方便今天介绍一个基于xunit和微软依赖注入框架的“真正”的依赖注入使用方式 ——— Xunit.DependencyInjection, 来自大师的作品&#xff0c;让你在测试代码里使用依…

图的建立-邻接表表示(C语言)

代码如下: /* 图的邻接表表示法 */#define MaxVertexNum 100 /* 最大顶点数设为100 */ typedef int Vertex; /* 用顶点下标表示顶点,为整型 */ typedef int WeightType; /* 边的权值设为整型 */ typedef char DataType; /* 顶点存储的数据类型设为字…

对一组同构对象用单数组表示法实现(算法导论第十章10.3-2)

对一组同构对象用单数组表示法实现 &#xff08;算法导论第十章10.3-2&#xff09; 考虑到数据安全问题&#xff0c;多用了一个数组来处理安全问题。 #ifndef C11LEARN_SINGULARGROUPSREPRESENTISOMORPHICOBJECTS_H #define C11LEARN_SINGULARGROUPSREPRESENTISOMORPHICOBJEC…

Java实现BST搜索树

代码如下: package BSTree;import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class BSTree {private class TreeNode{int data;TreeNode left;TreeNode right;public TreeNode(int e){data e;left null;…

给定一个n节点的二叉树,写出一个O(n)时间递归过程,将该树每个节点关键字输出(算法导论第十章10.4-2)

给定一个n节点的二叉树&#xff0c;写出一个O(n)时间递归过程&#xff0c;将该树每个节点关键字输出 &#xff08;算法导论第十章10.4-2&#xff09; #include <iostream> template<typename T> void TraverseBinaryTreeIndex(const BinaryTreeNodeIndex<T>…

C#由转换二进制所引起的思考,了解下?

【导读】最近遇到很有意思转换二进制的问题&#xff0c;有部分童鞋俨然已了解&#xff0c;可能也有一部分童鞋没碰到过也就不知情&#xff0c;这里我们来深入学习下转换二进制所带来的问题。在写此篇文章时&#xff0c;非常开心&#xff0c;收到再一次连任MVP的邮件&#xff0c…

给定一个n节点的二叉树,写出一个O(n)时间非递归过程,将该树每个节点关键字输出,可以使用一个栈作为辅助数据结构(算法导论第十章10.4-3)

给定一个n节点的二叉树&#xff0c;写出一个O(n)时间非递归过程&#xff0c;将该树每个节点关键字输出&#xff0c;可以使用一个栈作为辅助数据结构 &#xff08;算法导论第十章10.4-3&#xff09; template<typename T> void TraverseBinaryTreeIndexByStack(const Bi…

Java实现堆(最大堆,最小堆)

最大堆代码如下: package MaxHeap;import java.util.Scanner;public class Heap {private int data[];private int size;private int capacity;private final int maxNum 999999999;public Heap(){data new int[101];size 0;capacity 10;data[0] maxNum;}public Heap(int …

.Net Core In Docker 在容器内编译并发布

Docker可以说是现在微服务&#xff0c;DevOps的基础&#xff0c;咱们.Net Core自然也得上Docker。.Net Core发布到Docker容器的教程网上也有不少&#xff0c;但是今天还是想来写一写。你搜.Net core程序发布到Docker网上一般常见的有两种方案&#xff1a;1、在本地编译成Dll文件…

带你深入探究云原生时代的分布式操作系统 Kubernetes

过去几年&#xff0c;以 docker、kubernetes 为代表的容器技术已发展为一项通用技术&#xff0c;BAT、滴滴、京东、头条等大厂&#xff0c;都争相把容器和 k8s 项目作为技术重心&#xff0c;试图“放长线钓大鱼”。就说腾讯吧&#xff0c;目前基本所有业务都跑在云上&#xff0…

Java实现AVL平衡树

代码如下: package AVLTree;import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class AVLTree {private class TreeNode{private int data;TreeNode left;TreeNode right;private int height;public TreeNo…

辅助类BinaryTreeNodeIndex(用index索引代替指针)

辅助类BinaryTreeNodeIndex (用index索引代替指针&#xff09; template<typename T> class BinaryTreeNodeIndex { public:T key;int left;int right;int parent; public:BinaryTreeNodeIndex(){}BinaryTreeNodeIndex(const T key,int parent -1,int left -1,int ri…

C# 9.0 新特性之 Lambda 弃元参数

阅读本文大概需要不到 1 分钟。弃元&#xff08;Discards&#xff09; 是在 C# 7.0 的时候开始支持的&#xff0c;它是一种人为丢弃不使用的临时虚拟变量。语法上它是用来赋值的&#xff0c;但它却不被分配存储空间&#xff0c;即没有值&#xff0c;所以不能从中读取值。弃元用…

辅助类BinaryTreeNode(二叉树节点)

辅助类BinaryTreeNode (二叉树节点) template<typename T> class BinaryTreeNode { public:T key;BinaryTreeNode<T>* parent;BinaryTreeNode<T>* left;BinaryTreeNode<T>* right; public:BinaryTreeNode(){}BinaryTreeNode(T key,BinaryTreeNode<…

Java实现Huffman哈夫曼树

代码如下: package HuffmanTree;import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class HuffmanTree {private class TreeNode{private int val;private TreeNode left;private TreeNode right;public Tr…

应用交付老兵眼中的Envoy, 云原生时代下的思考

Envoy 是云原生时代的明星&#xff0c;其本质是反向代理负载均衡类软件&#xff0c;领域上归于应用交付&#xff0c;那么作为应用交付领域的老兵如何看待 Envoy&#xff0c;Envoy 又引发了哪些关于传统应用交付领域的思考&#xff1f;关于作者林静&#xff0c;F5 软件方向解决方…

给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出(算法导论第三版第十章10.4-5)

给定一个n节点二叉树&#xff0c;写出一个O(n)时间的非递归的过程&#xff0c;将该树每个结点的关键字输出。要求除该树本树的存储空间外只能使用固定量的额外存储空间&#xff0c;且过程中不得修改该树&#xff0c;即使是暂时的修改也不允许。 &#xff08;算法导论第三版第十…

Java实现Huffman哈夫曼树(数组实现)

代码如下: package HuffmanTreeArrays;import java.util.ArrayList; import java.util.Scanner;public class HuffmanTree {private class TreeNode{private int val;private int left;private int right;private int parent;public TreeNode(){val 0;left -1;right -1;par…