Install
$ agentstack add skill-kourou25-xugudb-dev-skills-efcore-xugudb-adapter ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Entity Framework Core 虚谷数据库适配指南
概述
本技能提供 Entity Framework Core (EF Core) 适配虚谷数据库(XuguDB)的完整流程。虚谷数据库通过提供专用的 EF Core 提供程序,可以无缝集成 EF Core 框架的各种功能,包括数据访问、迁移、查询优化等。
适配流程
在开始适配前,按以下顺序检查和修改:
1. NuGet 包安装 → 2. DbContext 配置 → 3. 实体配置 → 4. 迁移配置 → 5. 查询优化 → 6. 测试验证
第一步:安装 NuGet 包
虚谷数据库提供程序
# 安装虚谷数据库 EF Core 提供程序
dotnet add package Xugu.EntityFrameworkCore --version 1.0.0
# 或使用 Package Manager Console
Install-Package Xugu.EntityFrameworkCore -Version 1.0.0
EF Core 核心包
# 安装 EF Core 核心包
dotnet add package Microsoft.EntityFrameworkCore --version 8.0.0
# 安装 EF Core 设计时包
dotnet add package Microsoft.EntityFrameworkCore.Design --version 8.0.0
# 安装 EF Core 工具
dotnet add package Microsoft.EntityFrameworkCore.Tools --version 8.0.0
第二步:配置 DbContext
基本配置
using Microsoft.EntityFrameworkCore;
public class ApplicationDbContext : DbContext
{
public DbSet Users { get; set; }
public DbSet Orders { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseXugu(
"Server=127.0.0.1;Port=5138;Database=SYSTEM;Uid=SYSDBA;Pwd=SYSDBA;current_schema=RY;CHAR_SET=UTF8;COMPATIBLE_MODE=MYSQL"
);
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// 配置实体映射
modelBuilder.Entity(entity =>
{
entity.ToTable("USERS");
entity.HasKey(e => e.Id);
entity.Property(e => e.Id).HasColumnName("ID");
entity.Property(e => e.Username).HasColumnName("USERNAME");
entity.Property(e => e.Email).HasColumnName("EMAIL");
entity.Property(e => e.CreatedTime).HasColumnName("CREATED_TIME");
});
}
}
依赖注入配置
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// 配置 DbContext
services.AddDbContext(options =>
{
options.UseXugu(
"Server=127.0.0.1;Port=5138;Database=SYSTEM;Uid=SYSDBA;Pwd=SYSDBA;current_schema=RY;CHAR_SET=UTF8;COMPATIBLE_MODE=MYSQL"
);
// 配置日志
options.UseLoggerFactory(LoggerFactory.Create(builder =>
{
builder.AddConsole();
}));
// 启用敏感数据日志(开发环境)
options.EnableSensitiveDataLogging();
// 启用详细错误
options.EnableDetailedErrors();
});
// 注册其他服务
services.AddControllers();
}
}
第三步:配置实体
数据注解方式
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
[Table("USERS")]
public class User
{
[Key]
[Column("ID")]
public long Id { get; set; }
[Required]
[StringLength(50)]
[Column("USERNAME")]
public string Username { get; set; }
[StringLength(100)]
[Column("EMAIL")]
public string Email { get; set; }
[Column("CREATED_TIME")]
public DateTime CreatedTime { get; set; } = DateTime.Now;
[Column("UPDATED_TIME")]
public DateTime UpdatedTime { get; set; } = DateTime.Now;
}
Fluent API 方式
public class ApplicationDbContext : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity(entity =>
{
// 表名映射
entity.ToTable("USERS");
// 主键配置
entity.HasKey(e => e.Id);
// 列映射
entity.Property(e => e.Id)
.HasColumnName("ID")
.HasColumnType("BIGINT");
entity.Property(e => e.Username)
.HasColumnName("USERNAME")
.HasColumnType("VARCHAR(50)")
.IsRequired();
entity.Property(e => e.Email)
.HasColumnName("EMAIL")
.HasColumnType("VARCHAR(100)");
entity.Property(e => e.CreatedTime)
.HasColumnName("CREATED_TIME")
.HasColumnType("TIMESTAMP")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
entity.Property(e => e.UpdatedTime)
.HasColumnName("UPDATED_TIME")
.HasColumnType("TIMESTAMP")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
// 索引配置
entity.HasIndex(e => e.Username)
.HasDatabaseName("IDX_USERS_USERNAME")
.IsUnique();
entity.HasIndex(e => e.Email)
.HasDatabaseName("IDX_USERS_EMAIL");
});
}
}
第四步:配置迁移
创建迁移
# 创建迁移
dotnet ef migrations add InitialCreate
# 更新数据库
dotnet ef database update
# 生成 SQL 脚本
dotnet ef migrations script
迁移配置
public class ApplicationDbContext : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// 配置序列
modelBuilder.HasSequence("USERS_SEQ")
.StartsAt(1)
.IncrementsBy(1);
// 配置默认值
modelBuilder.Entity()
.Property(e => e.Id)
.HasDefaultValueSql("USERS_SEQ.NEXTVAL");
// 配置注释
modelBuilder.Entity()
.HasComment("用户表");
modelBuilder.Entity()
.Property(e => e.Id)
.HasComment("用户ID");
}
}
第五步:查询优化
查询过滤器
public class ApplicationDbContext : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// 全局查询过滤器
modelBuilder.Entity()
.HasQueryFilter(e => !e.IsDeleted);
// 多租户过滤器
modelBuilder.Entity()
.HasQueryFilter(e => e.TenantId == GetCurrentTenantId());
}
}
索引优化
public class ApplicationDbContext : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// 复合索引
modelBuilder.Entity()
.HasIndex(e => new { e.Username, e.Email })
.HasDatabaseName("IDX_USERS_USERNAME_EMAIL");
// 包含索引
modelBuilder.Entity()
.HasIndex(e => e.Username)
.HasDatabaseName("IDX_USERS_USERNAME_INCLUDE")
.IncludeProperties(e => new { e.Email, e.CreatedTime });
// 过滤索引
modelBuilder.Entity()
.HasIndex(e => e.Email)
.HasDatabaseName("IDX_USERS_EMAIL_ACTIVE")
.HasFilter("IS_DELETED = 0");
}
}
第六步:测试验证
编译打包
# 编译项目
dotnet build
# 运行项目
dotnet run
验证数据库连接
using var context = new ApplicationDbContext();
// 测试连接
if (context.Database.CanConnect())
{
Console.WriteLine("数据库连接成功");
}
else
{
Console.WriteLine("数据库连接失败");
}
// 执行查询
var users = context.Users.ToList();
Console.WriteLine($"查询到 {users.Count} 个用户");
常见问题排查
1. 驱动类找不到
现象: 启动时报错 Driver class not found
原因: NuGet 包未正确安装
解决:
- 检查
Xugu.EntityFrameworkCore包是否已安装 - 确保包版本与 .NET 版本兼容
2. 连接字符串错误
现象: 连接时报错 Invalid connection string
原因: 连接字符串参数错误
解决: 确保使用正确的连接字符串格式
Server=127.0.0.1;Port=5138;Database=SYSTEM;Uid=SYSDBA;Pwd=SYSDBA;current_schema=RY;CHAR_SET=UTF8;COMPATIBLE_MODE=MYSQL
3. 迁移失败
现象: 迁移时报错 Migration failed
原因: SQL 语法不兼容
解决:
- 检查虚谷数据库 SQL 语法
- 使用虚谷数据库兼容的函数和语法
- 参考虚谷数据库 SQL 语法文档
4. 查询性能问题
现象: 查询响应缓慢
原因: 查询优化不足
解决:
- 创建合适的索引
- 使用查询过滤器
- 优化 LINQ 查询
5. 事务问题
现象: 事务提交失败
原因: 事务配置错误
解决:
- 检查事务隔离级别
- 确保事务正确提交或回滚
6. 字符编码问题
现象: 数据显示乱码
原因: 字符编码不匹配
解决:
- 在连接字符串中添加
CHAR_SET=UTF8 - 检查数据库字符集配置
参考文档
详细的配置和使用说明请参考:
- [EF Core 配置详解](references/efcore-configuration.md)
- 虚谷数据库官方文档
- EF Core 官方文档
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: kourou25
- Source: kourou25/xugudb-dev-skills
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.