Compare commits
No commits in common. 'ac6640307ad26c3b053568598379f2a8dbd7ecb9' and 'f7476a9d9947b1f32e228998ae19f41a9f9aab9d' have entirely different histories.
ac6640307a
...
f7476a9d99
31 changed files with 519 additions and 1109 deletions
@ -1,82 +0,0 @@ |
|||||||
# IEGSave 接口说明 |
|
||||||
|
|
||||||
--- |
|
||||||
|
|
||||||
只读&非只读数据说明: |
|
||||||
|
|
||||||
只读数据不实现写数据功能,非只读需要实现写数据功能。 |
|
||||||
|
|
||||||
正常数据通过Path加载,只读数据则是通过string加载,无法对其中Path进行写入操作。 |
|
||||||
|
|
||||||
| 接口名称 | 接口简介 | |
|
||||||
| --------------------- | ------------ | |
|
||||||
| IEGSave | 读写数据加载 | |
|
||||||
| IEGSaveReadOnly | 只读数据加载 | |
|
||||||
| IEGSaveObjectReadOnly | 只读对象 | |
|
||||||
| IEGSaveObject | 读写对象 | |
|
||||||
| IEGSaveDataReadOnly | 只读数据 | |
|
||||||
| IEGSaveData | 读写数据 | |
|
||||||
|
|
||||||
## IEGSave |
|
||||||
|
|
||||||
### 描述 |
|
||||||
|
|
||||||
通用的存储数据加载接口,通过Path加载文件的数据。 |
|
||||||
|
|
||||||
### 方法说明 |
|
||||||
|
|
||||||
### void InitSaveFile(string path) |
|
||||||
|
|
||||||
> 通过文件路径加载存储文件 |
|
||||||
|
|
||||||
## IEGSaveReadOnly |
|
||||||
|
|
||||||
只读文件的数据加载接口,通过字符串或者字节流加载成对应的数据对象。 |
|
||||||
|
|
||||||
### void InitReadOnly(string data); |
|
||||||
|
|
||||||
> 通过字符串加载文件内容,需要先从文本文件中读取,请求服务或者其他方式获取内容。 |
|
||||||
|
|
||||||
### void InitReadOnly(byte[] data); |
|
||||||
|
|
||||||
> 通过字节流加载文件内容,需要先从字节流文件中读取,请求服务或者其他方式获取内容。 |
|
||||||
|
|
||||||
## IEGSaveObjectReadOnly |
|
||||||
|
|
||||||
只读对象文件的获取数据接口 |
|
||||||
|
|
||||||
### T GetObject<T>(string objectKey) where T: new(); |
|
||||||
|
|
||||||
> 通过键获取对应的对象,如果是单个对象文件的话,则传空字符串即可。 |
|
||||||
|
|
||||||
## IEGSaveObject : IEGSaveObjectReadOnly |
|
||||||
|
|
||||||
对象文件的获取&写入数据接口 |
|
||||||
|
|
||||||
### void SetObject<T>(string objectKey,T obj); |
|
||||||
|
|
||||||
> 将key值与key对应的对象写入到该文件下。 |
|
||||||
|
|
||||||
## IEGSaveDataReadOnly |
|
||||||
|
|
||||||
只读数据文件的获取数据接口 |
|
||||||
|
|
||||||
### T GetData<T>(string dataKey,object id) where T : new(); |
|
||||||
|
|
||||||
> 用于获取指定条目的数据对象。 |
|
||||||
|
|
||||||
### IEnumerable<T> GetAll<T>(string dataKey) where T : new(); |
|
||||||
|
|
||||||
> 用于获取key值下的所有列表数据 |
|
||||||
|
|
||||||
### IEnumerable<T> FindData<T>(string dataKey,Expression<Func<T, bool>> expression) where T : new(); |
|
||||||
|
|
||||||
> 用于查找key值下的所有满足条件的列表数据 |
|
||||||
|
|
||||||
## IEGSaveData |
|
||||||
|
|
||||||
数据文件的获取&写入数据接口 |
|
||||||
|
|
||||||
### void SetData<TData>(string dataKey,TData data,object id); |
|
||||||
|
|
||||||
> 将key值与key对应的对象的写入到该文件对应的位置(id)下,如果存在数据则进行覆盖。 |
|
@ -1,130 +0,0 @@ |
|||||||
# GenerateTools使用手册 |
|
||||||
|
|
||||||
> GenerateTools旨在生成任何应用程序中的组件,变量,对象,以及用到的一些流程等等。同时依赖于Save Tools强大的本地文件加载能力,Generate Tools可以通过配置各种文件实现界面的简单生成,菜单的生成,可编辑表格,可编辑项。 |
|
||||||
> |
|
||||||
> 再此之上,有些通用模板也会放在此工具下,方便扩展与生成。 |
|
||||||
|
|
||||||
```mermaid |
|
||||||
mindmap |
|
||||||
root((Generate-Tools)) |
|
||||||
Code |
|
||||||
SVG |
|
||||||
Dialog |
|
||||||
Basic |
|
||||||
Confirm |
|
||||||
Edit |
|
||||||
File |
|
||||||
UI |
|
||||||
EditParam |
|
||||||
Table |
|
||||||
Menu |
|
||||||
Tree |
|
||||||
Inteface |
|
||||||
Variant |
|
||||||
Tree |
|
||||||
Range |
|
||||||
Select |
|
||||||
Path |
|
||||||
ReadOnly |
|
||||||
``` |
|
||||||
|
|
||||||
## 📈生成一个可编辑表格 |
|
||||||
|
|
||||||
定义数据类,以学生信息为例 |
|
||||||
|
|
||||||
```csharp |
|
||||||
public struct DataStudent |
|
||||||
{ |
|
||||||
public int ID; |
|
||||||
public string Name { get; set; } |
|
||||||
public int Age; |
|
||||||
public EGPathSelect Path { set; get; } |
|
||||||
public DataStudent(string name, int age) |
|
||||||
{ |
|
||||||
Name = name; |
|
||||||
Age = age; |
|
||||||
ID = 0; |
|
||||||
Path = new EGPathSelect(); |
|
||||||
} |
|
||||||
} |
|
||||||
``` |
|
||||||
|
|
||||||
实例化一组学生信息对象列表,然后通过EGodotTable来对该列表进行初始化 |
|
||||||
|
|
||||||
```csharp |
|
||||||
public void TestTable() |
|
||||||
{ |
|
||||||
container = this.GetNode<TabContainer>("TabContainer"); |
|
||||||
List<DataStudent> dataStudents = new List<DataStudent>(); |
|
||||||
for (int stu = 0; stu < 10; stu++) |
|
||||||
{ |
|
||||||
dataStudents.Add(new DataStudent("stu" + stu, 18)); |
|
||||||
} |
|
||||||
for (int stu = 0; stu < 11; stu++) |
|
||||||
{ |
|
||||||
dataStudents.Add(new DataStudent("A" + stu, 20 + stu)); |
|
||||||
} |
|
||||||
EGodotTable table = container.CreateNode<EGodotTable>("Default"); |
|
||||||
table.InitData<DataStudent>(dataStudents); |
|
||||||
} |
|
||||||
``` |
|
||||||
|
|
||||||
运行结果如下 |
|
||||||
|
|
||||||
 |
|
||||||
|
|
||||||
 |
|
||||||
|
|
||||||
## 🌲生成一个树 |
|
||||||
|
|
||||||
定义一个Json,使用EGodotTree来对该Json进行初始化 |
|
||||||
|
|
||||||
```csharp |
|
||||||
public void TestTree() |
|
||||||
{ |
|
||||||
string json = @"{ |
|
||||||
'CPU': 'Intel', |
|
||||||
'PSU': '500W', |
|
||||||
'My' : { |
|
||||||
'AA':'BB', |
|
||||||
'Date': 111 |
|
||||||
} |
|
||||||
}"; |
|
||||||
container = this.GetNode<TabContainer>("TabContainer"); |
|
||||||
EGodotTree eGodotTree = container.CreateNode<EGodotTree>("TestTree"); |
|
||||||
eGodotTree.InitByJson(json); |
|
||||||
} |
|
||||||
``` |
|
||||||
|
|
||||||
 |
|
||||||
|
|
||||||
## 🚪生成一个可编辑弹窗并弹出 |
|
||||||
|
|
||||||
使用上述定义过的DataStudent,我们创建一个可编辑弹窗,并且在弹窗编辑完成后打印编辑后的内容。由于Godot子节点先加载,父节点后加载的机制,需要等待父节点实例化之后才能调用弹窗功能,我们使用一个延时方法(参考NodeExtension-EGThread部分),延时弹出该弹窗。 |
|
||||||
|
|
||||||
```csharp |
|
||||||
public void TestDialog() |
|
||||||
{ |
|
||||||
DataStudent dataStudent = new DataStudent(); |
|
||||||
dataStudent.EGenerateDictiontaryByObject(); |
|
||||||
this.ExecuteAfterSecond(() => |
|
||||||
{ |
|
||||||
this.EGEditDialog(new DataStudent().EGenerateDictiontaryByObject(), e => |
|
||||||
{ |
|
||||||
GD.Print("Name:" + e["Name"] + "Age:" + e["Age"]); |
|
||||||
}, "Edit"); |
|
||||||
},0.2f); |
|
||||||
} |
|
||||||
``` |
|
||||||
|
|
||||||
调用该方法后会弹出空白弹窗 |
|
||||||
|
|
||||||
 |
|
||||||
|
|
||||||
输入内容 |
|
||||||
|
|
||||||
 |
|
||||||
|
|
||||||
点击确认,控制台输出姓名与年龄的信息,此时您可以使用SaveTools写入本地配置文件,或者是数据库,再或者向后台,上位机或下位机发送该信息。 |
|
||||||
|
|
||||||
 |
|
Before Width: | Height: | Size: 53 KiB |
@ -1,34 +0,0 @@ |
|||||||
[remap] |
|
||||||
|
|
||||||
importer="texture" |
|
||||||
type="CompressedTexture2D" |
|
||||||
uid="uid://b2tuqm72haaab" |
|
||||||
path="res://.godot/imported/GenerateTools_001.JPG-fef7115ccd57135de62d4bd2954db1db.ctex" |
|
||||||
metadata={ |
|
||||||
"vram_texture": false |
|
||||||
} |
|
||||||
|
|
||||||
[deps] |
|
||||||
|
|
||||||
source_file="res://Manual/Img/GenerateTools_001.JPG" |
|
||||||
dest_files=["res://.godot/imported/GenerateTools_001.JPG-fef7115ccd57135de62d4bd2954db1db.ctex"] |
|
||||||
|
|
||||||
[params] |
|
||||||
|
|
||||||
compress/mode=0 |
|
||||||
compress/high_quality=false |
|
||||||
compress/lossy_quality=0.7 |
|
||||||
compress/hdr_compression=1 |
|
||||||
compress/normal_map=0 |
|
||||||
compress/channel_pack=0 |
|
||||||
mipmaps/generate=false |
|
||||||
mipmaps/limit=-1 |
|
||||||
roughness/mode=0 |
|
||||||
roughness/src_normal="" |
|
||||||
process/fix_alpha_border=true |
|
||||||
process/premult_alpha=false |
|
||||||
process/normal_map_invert_y=false |
|
||||||
process/hdr_as_srgb=false |
|
||||||
process/hdr_clamp_exposure=false |
|
||||||
process/size_limit=0 |
|
||||||
detect_3d/compress_to=1 |
|
Before Width: | Height: | Size: 62 KiB |
@ -1,34 +0,0 @@ |
|||||||
[remap] |
|
||||||
|
|
||||||
importer="texture" |
|
||||||
type="CompressedTexture2D" |
|
||||||
uid="uid://c4fu1phlhotka" |
|
||||||
path="res://.godot/imported/GenerateTools_002.JPG-7bb9bdf7b55c6f9bc9f2bca6dee8a982.ctex" |
|
||||||
metadata={ |
|
||||||
"vram_texture": false |
|
||||||
} |
|
||||||
|
|
||||||
[deps] |
|
||||||
|
|
||||||
source_file="res://Manual/Img/GenerateTools_002.JPG" |
|
||||||
dest_files=["res://.godot/imported/GenerateTools_002.JPG-7bb9bdf7b55c6f9bc9f2bca6dee8a982.ctex"] |
|
||||||
|
|
||||||
[params] |
|
||||||
|
|
||||||
compress/mode=0 |
|
||||||
compress/high_quality=false |
|
||||||
compress/lossy_quality=0.7 |
|
||||||
compress/hdr_compression=1 |
|
||||||
compress/normal_map=0 |
|
||||||
compress/channel_pack=0 |
|
||||||
mipmaps/generate=false |
|
||||||
mipmaps/limit=-1 |
|
||||||
roughness/mode=0 |
|
||||||
roughness/src_normal="" |
|
||||||
process/fix_alpha_border=true |
|
||||||
process/premult_alpha=false |
|
||||||
process/normal_map_invert_y=false |
|
||||||
process/hdr_as_srgb=false |
|
||||||
process/hdr_clamp_exposure=false |
|
||||||
process/size_limit=0 |
|
||||||
detect_3d/compress_to=1 |
|
Before Width: | Height: | Size: 16 KiB |
@ -1,34 +0,0 @@ |
|||||||
[remap] |
|
||||||
|
|
||||||
importer="texture" |
|
||||||
type="CompressedTexture2D" |
|
||||||
uid="uid://crtdss0o45blw" |
|
||||||
path="res://.godot/imported/GenerateTools_003.JPG-f588ba68b13367797de19c266c495b79.ctex" |
|
||||||
metadata={ |
|
||||||
"vram_texture": false |
|
||||||
} |
|
||||||
|
|
||||||
[deps] |
|
||||||
|
|
||||||
source_file="res://Manual/Img/GenerateTools_003.JPG" |
|
||||||
dest_files=["res://.godot/imported/GenerateTools_003.JPG-f588ba68b13367797de19c266c495b79.ctex"] |
|
||||||
|
|
||||||
[params] |
|
||||||
|
|
||||||
compress/mode=0 |
|
||||||
compress/high_quality=false |
|
||||||
compress/lossy_quality=0.7 |
|
||||||
compress/hdr_compression=1 |
|
||||||
compress/normal_map=0 |
|
||||||
compress/channel_pack=0 |
|
||||||
mipmaps/generate=false |
|
||||||
mipmaps/limit=-1 |
|
||||||
roughness/mode=0 |
|
||||||
roughness/src_normal="" |
|
||||||
process/fix_alpha_border=true |
|
||||||
process/premult_alpha=false |
|
||||||
process/normal_map_invert_y=false |
|
||||||
process/hdr_as_srgb=false |
|
||||||
process/hdr_clamp_exposure=false |
|
||||||
process/size_limit=0 |
|
||||||
detect_3d/compress_to=1 |
|
Before Width: | Height: | Size: 16 KiB |
@ -1,34 +0,0 @@ |
|||||||
[remap] |
|
||||||
|
|
||||||
importer="texture" |
|
||||||
type="CompressedTexture2D" |
|
||||||
uid="uid://1y1cdhnueqcp" |
|
||||||
path="res://.godot/imported/GenerateTools_004.JPG-87913768d75b083efc5aece06f847991.ctex" |
|
||||||
metadata={ |
|
||||||
"vram_texture": false |
|
||||||
} |
|
||||||
|
|
||||||
[deps] |
|
||||||
|
|
||||||
source_file="res://Manual/Img/GenerateTools_004.JPG" |
|
||||||
dest_files=["res://.godot/imported/GenerateTools_004.JPG-87913768d75b083efc5aece06f847991.ctex"] |
|
||||||
|
|
||||||
[params] |
|
||||||
|
|
||||||
compress/mode=0 |
|
||||||
compress/high_quality=false |
|
||||||
compress/lossy_quality=0.7 |
|
||||||
compress/hdr_compression=1 |
|
||||||
compress/normal_map=0 |
|
||||||
compress/channel_pack=0 |
|
||||||
mipmaps/generate=false |
|
||||||
mipmaps/limit=-1 |
|
||||||
roughness/mode=0 |
|
||||||
roughness/src_normal="" |
|
||||||
process/fix_alpha_border=true |
|
||||||
process/premult_alpha=false |
|
||||||
process/normal_map_invert_y=false |
|
||||||
process/hdr_as_srgb=false |
|
||||||
process/hdr_clamp_exposure=false |
|
||||||
process/size_limit=0 |
|
||||||
detect_3d/compress_to=1 |
|
Before Width: | Height: | Size: 19 KiB |
@ -1,34 +0,0 @@ |
|||||||
[remap] |
|
||||||
|
|
||||||
importer="texture" |
|
||||||
type="CompressedTexture2D" |
|
||||||
uid="uid://bb7r4akyiehi8" |
|
||||||
path="res://.godot/imported/GenerateTools_005.JPG-d203aa9f562e6d6e3ea80cdbaa8a92f9.ctex" |
|
||||||
metadata={ |
|
||||||
"vram_texture": false |
|
||||||
} |
|
||||||
|
|
||||||
[deps] |
|
||||||
|
|
||||||
source_file="res://Manual/Img/GenerateTools_005.JPG" |
|
||||||
dest_files=["res://.godot/imported/GenerateTools_005.JPG-d203aa9f562e6d6e3ea80cdbaa8a92f9.ctex"] |
|
||||||
|
|
||||||
[params] |
|
||||||
|
|
||||||
compress/mode=0 |
|
||||||
compress/high_quality=false |
|
||||||
compress/lossy_quality=0.7 |
|
||||||
compress/hdr_compression=1 |
|
||||||
compress/normal_map=0 |
|
||||||
compress/channel_pack=0 |
|
||||||
mipmaps/generate=false |
|
||||||
mipmaps/limit=-1 |
|
||||||
roughness/mode=0 |
|
||||||
roughness/src_normal="" |
|
||||||
process/fix_alpha_border=true |
|
||||||
process/premult_alpha=false |
|
||||||
process/normal_map_invert_y=false |
|
||||||
process/hdr_as_srgb=false |
|
||||||
process/hdr_clamp_exposure=false |
|
||||||
process/size_limit=0 |
|
||||||
detect_3d/compress_to=1 |
|
Before Width: | Height: | Size: 19 KiB |
@ -1,34 +0,0 @@ |
|||||||
[remap] |
|
||||||
|
|
||||||
importer="texture" |
|
||||||
type="CompressedTexture2D" |
|
||||||
uid="uid://gbr2uywo1eip" |
|
||||||
path="res://.godot/imported/GenerateTools_006.JPG-e3f17b752a2788befdbb14fd67a4b7fe.ctex" |
|
||||||
metadata={ |
|
||||||
"vram_texture": false |
|
||||||
} |
|
||||||
|
|
||||||
[deps] |
|
||||||
|
|
||||||
source_file="res://Manual/Img/GenerateTools_006.JPG" |
|
||||||
dest_files=["res://.godot/imported/GenerateTools_006.JPG-e3f17b752a2788befdbb14fd67a4b7fe.ctex"] |
|
||||||
|
|
||||||
[params] |
|
||||||
|
|
||||||
compress/mode=0 |
|
||||||
compress/high_quality=false |
|
||||||
compress/lossy_quality=0.7 |
|
||||||
compress/hdr_compression=1 |
|
||||||
compress/normal_map=0 |
|
||||||
compress/channel_pack=0 |
|
||||||
mipmaps/generate=false |
|
||||||
mipmaps/limit=-1 |
|
||||||
roughness/mode=0 |
|
||||||
roughness/src_normal="" |
|
||||||
process/fix_alpha_border=true |
|
||||||
process/premult_alpha=false |
|
||||||
process/normal_map_invert_y=false |
|
||||||
process/hdr_as_srgb=false |
|
||||||
process/hdr_clamp_exposure=false |
|
||||||
process/size_limit=0 |
|
||||||
detect_3d/compress_to=1 |
|
@ -1,276 +0,0 @@ |
|||||||
# SaveTools使用手册 |
|
||||||
|
|
||||||
--- |
|
||||||
|
|
||||||
注:SaveTools 目前因为接口反复修改的关系,Load方法增加对象的返回值以提供更多的操作方法。下面Not Complete表示该部分功能并未开发完毕。 |
|
||||||
|
|
||||||
```mermaid |
|
||||||
mindmap |
|
||||||
root((SaveTools)) |
|
||||||
Data |
|
||||||
CSV |
|
||||||
LiteDB |
|
||||||
Dapper |
|
||||||
MySql |
|
||||||
Sqlite |
|
||||||
|
|
||||||
File |
|
||||||
FTP |
|
||||||
SFTP |
|
||||||
LocalFileSystem |
|
||||||
WebDav - Not Complete |
|
||||||
Object |
|
||||||
Json |
|
||||||
Redis |
|
||||||
Byte - Not Complete |
|
||||||
``` |
|
||||||
|
|
||||||
## 支持的数据类型 |
|
||||||
|
|
||||||
- `Object` 对象类型的存储类型,通过key-value的方式获取对应的对象,常见的例子有Json,Redis等等。 |
|
||||||
- `Data` 数据类型的存储类型,同样通过key-Table的方式获取对应的数据表,通常为各种类型的数据库,比如MySql,Sqlite,LiteDB,CSV表格文件等等。 |
|
||||||
- `File` 文件类型的存储类型,提供对应的下载,上传接口以及各类文件系统管理接口,通常为各种文件共享服务,比如FTP,WebDav,本地文件系统等等。 |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 加载存储管理对象(可读可写) |
|
||||||
|
|
||||||
Load为可读写存储对象的加载,通常是用Path,或者数据库地址来进行实例化。 |
|
||||||
|
|
||||||
以SQLite数据库为例 |
|
||||||
|
|
||||||
```csharp |
|
||||||
EGSqliteSave SqliteTest = this.EGSave().Load<EGSqliteSave>("SaveData/test.db"); |
|
||||||
``` |
|
||||||
|
|
||||||
具体使用方法详见API - IEGSaveData部分。 |
|
||||||
|
|
||||||
## 读取存储管理对象(只读) |
|
||||||
|
|
||||||
Read为只读存储对象的加载,通常以字符&字节流的方式来获取,由于是只读数据,仅包含相关数据的搜索,获取功能。 |
|
||||||
|
|
||||||
以Json为例 |
|
||||||
|
|
||||||
```csharp |
|
||||||
string json = @"{ |
|
||||||
'CPU': 'Intel', |
|
||||||
'PSU': '500W', |
|
||||||
'Drives': [ |
|
||||||
'DVD read/writer' |
|
||||||
/*(broken)*/, |
|
||||||
'500 gigabyte hard drive', |
|
||||||
'200 gigabyte hard drive' |
|
||||||
], |
|
||||||
'My' : { |
|
||||||
'AA':'BB', |
|
||||||
'Date': new Date(123456789) |
|
||||||
} |
|
||||||
}"; |
|
||||||
EGJsonSave jsonManage = this.EGSave().Read<EGJsonSave>("Example", json); |
|
||||||
GD.Print(jsonManage.GetObject<string>("CPU")); |
|
||||||
``` |
|
||||||
|
|
||||||
## 数据库增删改查 |
|
||||||
|
|
||||||
针对Data型的存储类型,可以简单实现数据库的增删改查,同时可使用Database的建表操作完成数据库的初始化。 |
|
||||||
|
|
||||||
首先我们定义两个结构类型,其一是符合类型,带相关对象的: |
|
||||||
|
|
||||||
```csharp |
|
||||||
public struct DataStudent |
|
||||||
{ |
|
||||||
public int ID; |
|
||||||
public string Name { get; set; } |
|
||||||
public int Age; |
|
||||||
public EGPathSelect Path { set; get; } |
|
||||||
public DataStudent(string name, int age) |
|
||||||
{ |
|
||||||
Name = name; |
|
||||||
Age = age; |
|
||||||
ID = 0; |
|
||||||
Path = new EGPathSelect(); |
|
||||||
} |
|
||||||
} |
|
||||||
``` |
|
||||||
|
|
||||||
其二是只包含原始类型(IsPrimitive)和string类型的结构,其中类结构里面的所有属性(除了主键ID自增外)皆为属性类型。 |
|
||||||
|
|
||||||
```csharp |
|
||||||
public struct DataStu |
|
||||||
{ |
|
||||||
public int ID; |
|
||||||
public string Name { get; set; } |
|
||||||
public int Age { set; get; } |
|
||||||
public string Path { set; get; } |
|
||||||
public DataStu(string name, int age,string path) |
|
||||||
{ |
|
||||||
Name = name; |
|
||||||
Age = age; |
|
||||||
ID = 0; |
|
||||||
Path = path; |
|
||||||
} |
|
||||||
} |
|
||||||
``` |
|
||||||
|
|
||||||
后面我们会讲到两种类型兼容方面的差异,第一种仅支持单项操作,复数操作无法很好的兼容,第二种则支持复数操作(适用于数据批量导入,备份功能的定制)。 |
|
||||||
|
|
||||||
以MySQL为例: |
|
||||||
|
|
||||||
### 数据库连接 |
|
||||||
|
|
||||||
```csharp |
|
||||||
EGDapper mysqlSave = this.EGSave().Load<EGMysqlSave>("server=" + "localhost" + ";port=" + "3306" + ";uid=" + "root" + ";pwd=" + "root" + ";database=" + "Test3" + ";"); |
|
||||||
``` |
|
||||||
|
|
||||||
或者 |
|
||||||
|
|
||||||
```csharp |
|
||||||
EGMysqlSave mysqlSave = this.EGSave().Load<EGMysqlSave>("server=" + "localhost" + ";port=" + "3306" + ";uid=" + "root" + ";pwd=" + "root" + ";database=" + "Test3" + ";"); |
|
||||||
``` |
|
||||||
|
|
||||||
### 查询表名是否存在 |
|
||||||
|
|
||||||
```csharp |
|
||||||
bool isExist = mysqlSave.ContainsKey("DataStudent"); |
|
||||||
GD.Print(isExist); |
|
||||||
``` |
|
||||||
|
|
||||||
### 查询对应ID的条目是否存在 |
|
||||||
|
|
||||||
```csharp |
|
||||||
bool isExist = mysqlSave.ContainsData("DataStudent",3); |
|
||||||
GD.Print(isExist); |
|
||||||
``` |
|
||||||
|
|
||||||
### 初始化表 |
|
||||||
|
|
||||||
如果包含复合对象的,比如其它类对象的声明(例如上面的 EGPathSelect),此选项创建的字段为varchar(255),同String。 |
|
||||||
|
|
||||||
```csharp |
|
||||||
mysqlSave.CreateTable<DataStudent>("DataStudent"); |
|
||||||
``` |
|
||||||
|
|
||||||
### 增加数据 |
|
||||||
|
|
||||||
关于Path属性,会根据该类的ToString()方法,插入到表格对应的Path字段中。 |
|
||||||
|
|
||||||
```csharp |
|
||||||
DataStudent stuData = new DataStudent("Bob", 12); |
|
||||||
stuData.Path = new EGPathSelect(){Path = "AA"}; |
|
||||||
mysqlSave.AddData("DataStudent",stuData); |
|
||||||
``` |
|
||||||
|
|
||||||
或者 |
|
||||||
|
|
||||||
```csharp |
|
||||||
DataStu stu1 = new DataStu("Anti", 20,"London"); |
|
||||||
mysqlSave.AddData("DataStudent",stu1); |
|
||||||
``` |
|
||||||
|
|
||||||
### 批量增加数据 |
|
||||||
|
|
||||||
注意,批量增加数据时,需要保证对象结构必须包含表字段的所有非空属性(此框架提供的建表方法字段默认非空)。其中类结构里面的所有属性(除了主键ID自增外)皆为属性类型。 |
|
||||||
|
|
||||||
```csharp |
|
||||||
DataStu stu2 = new DataStu("CC", 23,"NewYork"){Age = 19}; |
|
||||||
DataStu stu3 = new DataStu("Rocket", 24,"Paris"){Age = 26}; |
|
||||||
List<DataStu> stuList = new List<DataStu>(); |
|
||||||
stuList.Add(stu2); |
|
||||||
stuList.Add(stu3); |
|
||||||
mysqlSave.AddData<DataStu>("DataStudent",stuList); |
|
||||||
``` |
|
||||||
|
|
||||||
### 删除数据(通过ID) |
|
||||||
|
|
||||||
删除ID为2的一条数据(可配合FindData找到要删除的内容的ID,实现批量删除) |
|
||||||
|
|
||||||
```csharp |
|
||||||
mysqlSave.RemoveData("DataStudent",2); |
|
||||||
``` |
|
||||||
|
|
||||||
### 查找数据(通过表达式) |
|
||||||
|
|
||||||
查找Name为CC的数据 |
|
||||||
|
|
||||||
```csharp |
|
||||||
IEnumerable<DataStu> findStudent = mysqlSave.FindData<DataStu>("DataStudent", e => e.Name == "CC"); |
|
||||||
GD.Print(findStudent.Count() +" data has been find!"); |
|
||||||
foreach (DataStu stu in findStudent) |
|
||||||
{ |
|
||||||
GD.Print(stu.Path); |
|
||||||
} |
|
||||||
``` |
|
||||||
|
|
||||||
### 查找数据(通过关键词) |
|
||||||
|
|
||||||
查找Name包含C的数据,注意:通过关键词查找的数据大小写不敏感,包含小写c也会被检索出来 |
|
||||||
|
|
||||||
```csharp |
|
||||||
IEnumerable<DataStu> findStudent = mysqlSave.FindData<DataStu>("DataStudent","Name","C"); |
|
||||||
GD.Print(findStudent.Count() +" data has been find!"); |
|
||||||
foreach (DataStu stu in findStudent) |
|
||||||
{ |
|
||||||
GD.Print(stu.Path); |
|
||||||
} |
|
||||||
``` |
|
||||||
|
|
||||||
### 修改数据 |
|
||||||
|
|
||||||
查找所有Name字段包含CC的数据,并给名称增加编号。 |
|
||||||
|
|
||||||
```csharp |
|
||||||
IEnumerable<DataStu> findStudent = mysqlSave.FindData<DataStu>("DataStudent","Name","CC"); |
|
||||||
GD.Print(findStudent.Count() +" data has been find!"); |
|
||||||
int count = 0; |
|
||||||
foreach (DataStu stu in findStudent) |
|
||||||
{ |
|
||||||
DataStu NewData = new DataStu("CC_" + count, stu.Age, stu.Path); |
|
||||||
mysqlSave.UpdateData("DataStudent", NewData, stu.ID); |
|
||||||
count++; |
|
||||||
} |
|
||||||
``` |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 开发计划(随版本更新) |
|
||||||
|
|
||||||
Object: |
|
||||||
|
|
||||||
- [x] Json |
|
||||||
|
|
||||||
- [x] Redis |
|
||||||
|
|
||||||
- [ ] Byte |
|
||||||
|
|
||||||
- [ ] etc... |
|
||||||
|
|
||||||
Data: |
|
||||||
|
|
||||||
- [x] LiteDB |
|
||||||
- [x] Dapper |
|
||||||
- [x] Sqlite |
|
||||||
- [x] MySql |
|
||||||
- [x] Csv |
|
||||||
- [ ] etc... |
|
||||||
|
|
||||||
File: |
|
||||||
|
|
||||||
- [x] LocalFile |
|
||||||
- [x] Ftp |
|
||||||
- [x] SFtp |
|
||||||
- [ ] WebDav |
|
||||||
- [ ] etc... |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 使用案例 |
|
||||||
|
|
||||||
## 配置文件写入与加载 |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 简易背包 |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 使用CQRS实现可追溯的文件操作 |
|
Loading…
Reference in new issue