SOD框架在多年前就已经支持国产数据库人大金仓和达梦,对应的源码解决方案程序集项目为:
-
PWMIS.DataProvider.Data.Dameng -- 达梦
-
PWMIS.DataProvider.Data.Kingbase --人大金仓
对应的Nuget程序包ID为:
2024年5月SOD框架程序集全面采用 .NET6.0为目标框架,对国产化的支持更好,完全兼容SOD的分页和自增表方案,并且通过了项目验证,可以放心使用。 对应的程序包ID为:
-
PWMIS.SOD.DaMeng.Provider --达梦
-
PWMIS.SOD.Kingbase.Provider --人大金仓
下面是使用SOD达梦和金仓提供程序的示例代码。
达梦数据库测试代码:
static void Main(string[] args)
{
Console.WriteLine("Hello, SOD6!");
//自增表测试,参考官方技术文档 https://eco.dameng.com/document/dm/zh-cn/faq/faq-sql-gramm.html
//如果需要创建表,请取消下一个代码中的注释
string createTable = @"
CREATE TABLE new_employees1
(
id_num int IDENTITY(1,1),
fname varchar (20),
minit char(1),
lname varchar(30)
);";
var helper = AdoHelper.CreateHelper("local");
//helper.ExecuteNonQuery(createTable);
//查询插入的自增值必须跟插入语句在同一个连接会话中
helper.OpenSession();
string sql_insert = "insert into new_employees1(fname,minit,lname) values('test','d','test1');";
helper.ExecuteNonQuery(sql_insert);
string sql_lastid = "select @@IDENTITY";
long lastInsertedId=(long)helper.ExecuteScalar(sql_lastid);
Console.WriteLine("插入记录,自增标识列[ID]={0}", lastInsertedId);
helper.CloseSession();
//自增表测试完成
SimpleEntity entity = new SimpleEntity();
entity.Name = "Test_" + DateTime.Now.ToString("yyyyMMddHHmmss");
entity.AtTime = DateTime.Now;
LocalDbContext ctx = new LocalDbContext();
ctx.Add(entity);
var localDb = (Dameng)ctx.CurrentDataBase;
var cb = localDb.ConnectionStringBuilder;
Console.WriteLine("Dameng(达梦) Add Entity Data OK! Database User ID={0},\r\n " +
"Inserted Entity Identity Field value={1}", localDb.ConnectionUserID, entity.ID);
//查询前10条数据
var list= OQL.From<SimpleEntity>().Limit(10,1).ToList();
//使用接口类型查询
//SimpleEntity 映射的表名称和类型名称不一致,所以下面的查询需要指定表名称
string tableName = entity.GetTableName();
var list2 = OQL.FromObject<ISimple>(tableName)
.Select()
.OrderBy((o,entity)=>o.Asc(entity.ID)) //ISimple 动态创建的实体类没有指定主键信息,分页前需要指定排序字段
.Limit(10, 1)
.ToList();
Console.WriteLine("Data record count={0}", list.Count);
Console.Read();
}
更详细的内容请参考项目解决方案的源码,对应位置:
\sod\src\SOD.NET6\OtherProvider\PWMIS.DataProvider.Data.Dameng
下面是金仓数据库测试代码:
static void Main(string[] args)
{
Console.WriteLine("Hello, SOD6!");
SimpleEntity entity = new SimpleEntity();
entity.Name = "Test_"+DateTime.Now.ToString("yyyyMMddHHmmss");
entity.AtTime = DateTime.Now;
LocalDbContext ctx = new LocalDbContext();
ctx.Add(entity);
var localDb = (Kingbase)ctx.CurrentDataBase;
var cb = localDb.ConnectionStringBuilder;
Console.WriteLine("Kingbase Add Entity Data OK! Database User ID={0},\r\n " +
"Inserted Entity Identity Field value={1}", localDb.ConnectionUserID,entity.ID);
Console.Read();
}
更详细的内容请参考项目解决方案的源码,对应位置:
\sod\src\SOD.NET6\OtherProvider\PWMIS.DataProvider.Data.Kingbase
PDF.NET.SOD 框架支持 .NET 6.0及以上目标版本的 程序包
-
注意: 如果需要在 .NET4.7/.NET4.8/.NET Core 2x、3x/.NET 5 使用SOD框架,则需要使用SOD的.NET Standard 2.0目标版本,对应的Nuget包版本为: PDF.NET.SOD 7.0
-
如果仅需要支持.NET2.0/.NET3.x/.NET4.x的目标版本,对应的Nuget包版本为: PDF.NET.SOD 6.x 以及之下的版本
-
如果需要支持.NET 6.0/7.0/8.0以及之上的目标版本,对应的Nuget包版本为: PWMIS.SOD.6.0以及之上的版本
深蓝医生
2024-5-17