主题介绍

本文主要介绍Net Core框架下如何连接瀚高数据库。

驱动介绍

链接:https://pan.baidu.com/s/1xuz6uJz0utRgKWecXhpOiA?pwd=o0tj

瀚高数据库安装完毕后,自带数据库驱动,其位置如下:

image

其中 DotNet 文件夹 即为 Net 程序使用的驱动包,进入目录

image

解压后,可以看到

image

其中列出了 net5.0netcoreapp3.1netstandard2.0netstanddard2.1Nhgb.EntityFrameworkcore.HGDB.dll 等几个文件,根据开发环境和框架,从中选择适用的驱动。

Net Core

.NET Core平台是免费的、开源的。

.NET Core的主要特性包括开源、跨平台、现代、灵活、轻量级、快速、友好、可共享,以及为未来的软件开发而构建的。

.NET Core是一个通用的软件开发框架。它允许开发人员构建各种软件,包括Web,桌面,移动,云,游戏,物联网等。

.NET Core支持并运行在Windows、MacOS和Linux操作系统上。.NET Core跨体系结构(包括x64、x86和ARM)是一致的。可以导入相同的程序集和库,并在多个平台上使用。这些程序集和库都可以使用如下的.NET语言进行构建,如:C#、VB.NET或F#。

.NET Core通过.NET Standard与.NET Framework,Xamarin和Mono兼容。

ASP.NET Core是.NET Core生态系统的核心组件。ASP.NET Core是一个用于构建网页的框架。ASP.NET Core基于MVC架构,并提供用于构建Web的通用库。

.NET Core的版本截止为3.1。

.NET 5 和 .Net Core 官方支持策略 (microsoft.com)

image

根据 微软官方文档的介绍.NET Standard - .NET | Microsoft Learn的介绍

  • netstandard2.0

image

  • netstandard2.1

image

综上所述:使用Net Core框架的项目,首选需要引用 netcoreapp3.1 文件中的驱动。

开发环境搭建

软件 版本
HGDB 安全版V4、企业版v6及以上版本
visual studio 2022

添加引用

image

目标框架

image

示例代码

Student.cs

Text
public class Student
{
public int Id { get; set; }

public string Name { get; set; }

public string Sex { get; set; }

public int Age { get; set; }

public int Grade { get; set; }

public string Address { get; set; }

}

StudentViewModel.cs

Text
public class StudentViewModel
{
public List<Student> Students { get; set; }
}

StudentController.cs

Text
public class StudentController : Controller
{
public IActionResult Index()
{
DataTable dt = new DataTable();
string sql = "select id as Id,name as Name,sex as Sex,age as Age,grade as Grade,address as Address from student order by id";

var connString = "Server = 192.168.2.5; Port = 5866; User Id = sysdba; Password = Hero@123; Database = highgo;";
var conn = new NhgdbConnection(connString);
conn.Open();

NhgdbCommand sc = new NhgdbCommand(sql);
sc.Connection = conn;
sc.CommandTimeout = 0;

NhgdbDataAdapter adapter = new NhgdbDataAdapter(sc);
adapter.Fill(dt);

// 把DataTable转换为IList<UserInfo>
IList<Student> students = ModelConvertHelper<Student>.ConvertToModel(dt);
return View(new StudentViewModel { Students =students.ToList() });
}
}

Index.cshtml

Text
<div class="panel panel-default todo-panel">
<div class="panel-heading">@ViewData["Title"]</div>
<table class="table table-hover">
<thead>
<tr>
<td> <input type="checkbox" class="done-checkbox"></td>
<td>序号</td>
<td>姓名</td>
<td>性别</td>
<td>年龄</td>
<td>年级</td>
<td>地址</td>
</tr>
</thead>
@foreach (var item in Model.Students)
{
<tr>
<td>
<input type="checkbox" class="done-checkbox">
</td>
<td>@item.Id</td>
<td>@item.Name</td>
<td>@item.Sex</td>
<td>@item.Age</td>
<td>@item.Grade</td>
<td>@item.Address</td>
</tr>
}
</table>
</div>

结果演示

image

在Net5.0+场景中的表现

image

经测试,在6.0、7.0、8.0的场景下,本示例均可正常运行。

需要注意的是,当目标框架不存在时,vs2022会提示需要安装,点击确定后,会自动下载。完了安装即可。

引用其他版本驱动的表现

引用 netstanddard2.0

image

运行应用报错

image

引入Microsoft.Bcl.AsyncInterfaces 1.0.0 版本后,可正常运行应用

引用 netstanddard2.1

不需引入其他依赖,即可正常运行。

image

引用 net5.0

版本冲突,暂时不能添加高版本的依赖dll

image

目标框架改为.NET 5.0后可正常使用。

引用 net6.0

版本冲突

image

目标框架改为.NET 6.0后可正常使用。

引用 net7.0

版本冲突

image

目标框架改为.NET 7.0后可正常使用。

引用 net8.0

版本冲突

image

目标框架改为.NET 8.0后可正常使用。