MenuParentIdConverter.cs
989 Bytes
namespace Yi.Framework.Rbac.Domain.Shared;
/// <summary>
/// <c>Menu.ParentId</c> 在部分库中为 <c>varchar</c>(如根节点为 <c>0</c>),与 ORM 中 Guid 映射不一致时会导致 SqlSugar 绑定失败;统一用字符串落库并在需要时转为 <see cref="Guid"/>。
/// </summary>
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;
}
/// <summary>写入数据库:根节点与历史库对齐为 <c>0</c>,否则为标准 GUID 字符串。</summary>
public static string FromGuid(Guid g) => g == Guid.Empty ? "0" : g.ToString("D");
}