暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Windows下C#通过EFCore方式连接GBase8s数据库

原创 努力努力再努力 2024-10-16
567

一、概述

本文以示例的形式介绍 Windows10下C#通过EFCore的方式操作GBase 8s 数据库的方法,仅保证使用相同环境下的测试能通过,不同的环境下仅供参考。

示例使用的数据库版本为GBase8sV8.8_TL_3.5.1_x86_64,CSDK的版本为clientsdk_3.5.1_1_4afd74_WIN2003_x86_64(Windows)。

示例使用的数据库服务器信息如下:

表 1 示例使用的数据库信息

序号 参数名称 示例参数值 说明信息
1 主机名称 192.168.137.66 数据库服务器的主机名称或IP地址
2 端口号 6666 数据库服务器使用的端口号
3 数据库服务名称 yangzai 数据库服务名称(DBSERVERNAME)
4 数据库名称 testdb 数据库名称(DBNAME)
5 数据库字符集 zh_CN.utf8 数据库字符集(DB_LOCALE)
6 客户端字符集 zh_CN.utf8 客户端字符集(CLIENT_LOCALE)
7 GLU支持 1 GLU支持(GL_USEGLU)

数据库及CSDK的下载地址:

https://www.gbase.cn/download/gbase-8s-1?category=INSTALL_PACKAGE

二、Windows下的CSDK安装及连接配置

1、安装CSDK

CSDK需要使用管理员权限进行安装。解压CSDK的安装包,以管理员身份运行installclientsdk.exe开始安装。

安装介绍协议页面,需要将滚动条拉到最下面,才可以点击接受协议的单选框。

设置安装路径,这里我使用 C:\Program Files\GBase Client-SDK 目录。

安装的功能浏览,CSDK 默认安装的组件包括:OLEDB 运行环境、C++接口、ESQL\C、.NET驱动、客户端程序 LIBDMI、ODBC 驱动、通用数据库工具和 GLS。

安装组件预览,执行安装。

至此,Windows版的CSDK安装完毕!

2、配置CSDK

安装完成后,需要对客户端连接进行设置。在开始菜单里找到 GBase Client-SDK 4.10(64-bit) 目录,使用 管理员权限运行 打开 Setnet32 程序。

在服务器信息(Server Information)选项卡中设置数据库服务器信息:

Server Information选项卡设置项说明:

设置项 说明
GBase 8s Server 需要连接的数据库实例名称
HostName 数据库ip地址
Protocolname 连接方式
Service Name 端口号

在主机信息(Host Information)选项卡中设置主机信息:

Host Information选项卡设置项说明:

设置项 说明
Current Host 选择刚才设定的HostName
User Name 用户名
Password Option 密码选项
Password 密码

三、C#操作数据库

这里我使用的是 Visual Studio 2022 社区版开发工具。

1、创建并配置项目

打开Visual Studio 2022,创建新项目,选择控制台应用,点击下一步。

创建控制台应用程序,指定项目名称为 EFCoreGBase,位置等,点击下一步。

框架信息选择 .NET Core 2.1,点击创建。

注意:框架版本不要选择 .NET 8.0或者其他相关版本,因为不兼容!!!如果没有 .NET Core 2.1,需要自行安装一下。

2、添加相关依赖包

点击菜单栏中的【工具】,选择【NuGet 包管理器】下面的【管理解决方案的NuGet程序包】,弹出界面如下图所示:

接着,我们搜索以下3个包进行安装:

  • GeneralData.EntityFrameworkCore.GBase(1.0.7_1)

注:此包的下载地址为:https://gbasedbt.com/dl/EFcore/ EFCore3.1.3_1.0.7_1_win_x86_64.tar

  • Microsoft.Entityframeworkcore.Tools(3.1.3版本)
  • Microsoft.Entityframeworkcore.Design(3.1.3版本)

安装完毕后如下图所示:

注意:建议每个包的版本严格按照本文档中所述进行下载安装。

3、C#代码示例

这里采用Code-First方式,先定义自己的模型类,然后通过迁移来创建数据库表。

①. 定义你自己的类,这些类将映射到数据库表

在项目中新建Models文件夹,然后在此文件夹中添加实体类Blog.cs和上下文类BloggingContext.cs

// Blog.cs文件  
namespace EFCoreGBase.Models    
{    
    public class Blog    
    {    
      public int BlogId { get; set; }    
      public string Url { get; set; }    
      public int? Rating { get; set; }    
    }    
}    



// BloggingContext.cs文件 
using Microsoft.EntityFrameworkCore;  
namespace EFCoreGBase.Models  
{  
    public class BloggingContext: DbContext  
    {  
        public DbSet<Blog> Blog { get; set; }  
        protected override void OnModelCreating(ModelBuilder modelBuilder)  
        {  
             modelBuilder.Entity<Blog>()  
                   .HasData(  
                          new Blog { BlogId = 1, Url = @"https://devblogs.microsoft.com/dotnet", Rating = 1 },  
                          new Blog { BlogId = 2, Url = @"https://mytravelblog.com/", Rating = 2 });  
        }  

②. 使用EF迁移工具来创建数据库表

在下方的程序包管理器控制台中运行如下代码:

Add-Migration blog

Update-Database

第一步完成后,项目中会生成名为Migrations的文件夹;第二步完成后,testdb数据库中会自动生成blog表,并且存在2条初始数据。

注意:

上述的Add-Migration blog中blog为迁移名称,可自行更改

Update-Database进行数据库更改

③. 操作数据库

// Program.cs文件  
using System;  
using System.Linq;  
using EFCoreGBase.Models;  

namespace EFCoreGBase  
{  
    public class Program  
    {  
        static void Main(string[] args)  
        {  
            var context = new BloggingContext();  

            // Create,向表中增加数据  
            Console.WriteLine("Insert a new blog");  
            context.Add(new Blog { Url = "http://blogs.msdn.com/adonet", Rating = 99 });  
            context.SaveChanges();  

            // Update,修改blogid为1的url值  
            Console.WriteLine("Update the blog");  
            context.Update(new Blog { BlogId = 1, Url = "I'm EF Core URL!!!" });  
            context.SaveChanges();  

            // Delete,删除指定id的数据  
            Console.WriteLine("Delete the blog");  
            context.Remove(new Blog { BlogId = 2 });  
            context.SaveChanges();  

            // Read,查询表中的数据  
            Console.WriteLine("Querying for a blog");  
            Console.WriteLine("表中数据总行数为: " + context.Blog.Count());  
            var blogs = context.Blog.ToList();  
            foreach (var blog in blogs)  
            {  
                 Console.WriteLine($"Blog ID: {blog.BlogId}, URL: {blog.Url}, Rating: {blog.Rating}");  
            }  
        }  
    }  
}  

④. 程序运行结果

运行Program.cs程序代码,执行Debug测试连接到数据库结果。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论