SuncodeSoftware.SuperSDK.Data 5.0.3

There is a newer version of this package available.
See the version list below for details.
dotnet add package SuncodeSoftware.SuperSDK.Data --version 5.0.3
                    
NuGet\Install-Package SuncodeSoftware.SuperSDK.Data -Version 5.0.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SuncodeSoftware.SuperSDK.Data" Version="5.0.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SuncodeSoftware.SuperSDK.Data" Version="5.0.3" />
                    
Directory.Packages.props
<PackageReference Include="SuncodeSoftware.SuperSDK.Data" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SuncodeSoftware.SuperSDK.Data --version 5.0.3
                    
#r "nuget: SuncodeSoftware.SuperSDK.Data, 5.0.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SuncodeSoftware.SuperSDK.Data@5.0.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SuncodeSoftware.SuperSDK.Data&version=5.0.3
                    
Install as a Cake Addin
#tool nuget:?package=SuncodeSoftware.SuperSDK.Data&version=5.0.3
                    
Install as a Cake Tool

SuperSDK.Data

数据访问层,基于 Entity Framework Core 和 SQLite 的数据持久化。支持对同一项目中的实体库和数据访问库进行代码混淆,表名 / 列名定义完全安全。

安装

dotnet add package SuncodeSoftware.SuperSDK.Data

使用示例

1. 定义实体模型

using SuperSDK.Data;
using System.ComponentModel.DataAnnotations;

// 实现 ITableEntity + IDatabaseEntity 接口:
//   - DatabaseName / TableName 返回的是字符串字面量(数据,非标识符)
//   - 混淆后 CLR 类型名会改变,但接口返回值不变 → 表名/数据库名永远正确
public class AppConfig : IEntity, IDatabaseEntity, ITableEntity
{
    [Key]
    public string Id { get; set; } = Guid.NewGuid().ToString();

    [Required]
    public string ConfigName { get; set; } = "";

    public string ConfigValue { get; set; } = "";

    // 指定数据库文件名(不含 .db 后缀)
    public string DatabaseName => "MyApp";

    // 指定 SQLite 表名(混淆安全:字符串字面量)
    public string TableName => "AppConfig";
}

2. 初始化数据库

using SuperSDK.Data;

// 注册实体(可连续注册多个)
DbContextFactory.RegisterEntity<AppConfig>();

// 初始化(所有 RegisterEntity 调用后执行一次)
DbContextFactory.EnsureInitialized();

3. CRUD 操作

using SuperSDK.Data;

// 插入
var config = new AppConfig { ConfigName = "Theme", ConfigValue = "Dark" };
EntityStore.Insert(config);

// 查询所有
var all = EntityStore.GetAll<AppConfig>();

// 条件查询
var dark = EntityStore.Find<AppConfig>(c => c.ConfigValue == "Dark");

// 更新
config.ConfigValue = "Light";
EntityStore.Update(config);

// 删除
EntityStore.Delete(config);

🔐 加密字段

对于需要加密存储的敏感数据:

public class UserProfile : IEntity, IEncryptedEntity, IDatabaseEntity, ITableEntity
{
    [Key]
    public string Id { get; set; } = Guid.NewGuid().ToString();

    public string Username { get; set; } = "";

    // 加密字段 - 自动隔离到 secure.db(SQLCipher 加密)
    [Encrypted]
    public string Password { get; set; } = "";

    [Encrypted]
    public List<string> ApiKeys { get; set; } = new();

    public string DatabaseName => "MyApp";
    public string TableName    => "UserProfile";
}

// 初始化加密数据库
EncryptedFieldManager.Initialize("Data/secure.db", "YourSecurePassword");

🛡️ 代码混淆支持

SuperSDK.Data 本身及所有使用它定义实体的库均可安全进行代码混淆(Obfuscar)。

混淆安全保证原理:

被混淆的东西 混淆前 混淆后 影响
CLR 类型名 AppConfig _A 无影响(框架靠接口值定位表名)
接口属性名 TableName 不变(接口约束保护) 无影响
属性返回值 "AppConfig" "AppConfig" 字符串字面量,混淆器不改变数据
列名(属性名) ConfigName 不变(RenameProperties=false 无影响

约定:

  • 实体必须实现 ITableEntityTableName)和 IDatabaseEntityDatabaseName)接口,或使用 [Table("名称")] 特性
  • 混淆时需设置 RenameProperties=false(防止 EF Core 列名变化)
  • 在任意库中定义的实体均遵循相同约定,均可混淆
Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on SuncodeSoftware.SuperSDK.Data:

Package Downloads
SuncodeSoftware.SuperSDK.UI

Avalonia UI 通用组件库 - 通知管理、对话框、ViewModelBase 等

SuncodeSoftware.SuperSDK.App

Application foundation framework for Avalonia-based Goes applications

SuncodeSoftware.SuperSDK.Talk

SuperSDK AI 对话组件库 - 提供可扩展的聊天消息模型、ViewModel 层、渲染注册表与 Avalonia ChatBox 控件,原生集成 MessageBus

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
5.1.4 3 3/16/2026
5.1.3 3 3/16/2026
5.1.2 3 3/16/2026
5.1.1 10 3/16/2026
5.1.0 23 3/16/2026
5.0.6 25 3/16/2026
5.0.5 24 3/16/2026
5.0.4 22 3/16/2026
5.0.3 27 3/16/2026
5.0.2 32 3/16/2026
5.0.1 29 3/16/2026
5.0.0 38 3/13/2026
4.8.0 50 3/12/2026
4.7.0 49 3/12/2026
4.6.0 49 3/12/2026
4.5.0 56 3/12/2026
4.4.0 52 3/12/2026
4.3.0 55 3/12/2026
4.1.0 146 3/9/2026
4.0.3 133 3/6/2026
Loading failed

fix db init NotMapped entity scope