實體類要求
- 可序列化(
[Serializable])。
- 實現
IPut 接口(提供 Key 屬性)。
實體代碼
[Serializable]
public class Item : IPut
{
public string Name { get; set; }
public string Text { get; set; }
public int ID { get; set; }
public string Key => Name; // 作為 BDB 主鍵
public override string ToString() => $"ID:{ID} Key:{Name}";
}
CRUD 操作示例
// 插入/更新
using (var mgr = new BDBManager("db", "db.dat"))
{
bool ok = mgr.Set(new Item { ID = 1000, Name = "Test", Text = "213" });
Console.WriteLine($"Set: {ok}");
}
// 查詢
using (var mgr = new BDBManager("db", "db.dat"))
{
IPut put = new Item { Name = "Test" };
bool ok = mgr.Get(ref put);
Console.WriteLine($"Get: {ok}, Item: {put}");
}
// 刪除
using (var mgr = new BDBManager("db", "db.dat"))
{
IPut put = new Item { Name = "Test" };
bool ok = mgr.Remove(put);
Console.WriteLine($"Remove: {ok}, Item: {put}");
}
// 遍歷
using (var mgr = new BDBManager("db", "db.dat"))
{
foreach (var item in mgr.Find())
Console.WriteLine(item);
}
關鍵點
BDBManager 實現 IDisposable,using 確保事務提交與資源釋放。
Set 為 upsert 語義(存在則更新,不存在則插入)。
Get 通過 ref IPut 返回完整實體。
Find 返回所有記錄列表,適合小數據量全表掃描。