namespace Yi.Framework.Rbac.Domain.Shared;
///
/// Menu.ParentId 在部分库中为 varchar(如根节点为 0),与 ORM 中 Guid 映射不一致时会导致 SqlSugar 绑定失败;统一用字符串落库并在需要时转为 。
///
public static class MenuParentIdConverter
{
public static bool IsRoot(string? raw) =>
string.IsNullOrWhiteSpace(raw) ||
raw.Trim() == "0" ||
string.Equals(raw.Trim(), Guid.Empty.ToString(), StringComparison.OrdinalIgnoreCase);
public static Guid ToGuid(string? raw)
{
if (IsRoot(raw))
{
return Guid.Empty;
}
var t = raw!.Trim();
return Guid.TryParse(t, out var g) ? g : Guid.Empty;
}
/// 写入数据库:根节点与历史库对齐为 0,否则为标准 GUID 字符串。
public static string FromGuid(Guid g) => g == Guid.Empty ? "0" : g.ToString("D");
}