增加对数据库主键为numberic的支持
This commit is contained in:
yubaolee
2021-03-13 16:21:56 +08:00
parent f7088c9d29
commit 9c2d044d12
38 changed files with 911 additions and 151 deletions

View File

@@ -0,0 +1,32 @@
using System.ComponentModel;
using Yitter.IdGenerator;
namespace OpenAuth.Repository.Core
{
/// <summary>
/// 数据库Id为numberic类型的数据实体使用该基类用法同Entity
/// 数据库Id字段为numberic(16,0)或以上长度的整型采用雪花算法生成Id。
/// </summary>
public class LongEntity :BaseEntity
{
[Browsable(false)]
public long Id { get; set; }
public override bool KeyIsNull()
{
return Id == 0;
}
/// <summary>
/// 采用雪花算法计算Id
/// </summary>
public override void GenerateDefaultKeyVal()
{
// 全局初始化设置WorkerId默认最大2^16-1。初始化过程全局只需一次且必须最先设置
var options = new IdGeneratorOptions(){ WorkerId = 1};
IIdGenerator IdHelper = new YitIdGenerator(options);
// 初始化以后就可以在需要的地方调用方法生成ID。
Id = IdHelper.NewLong();
}
}
}

View File

@@ -0,0 +1,31 @@
using System;
using System.ComponentModel;
namespace OpenAuth.Repository.Core
{
/// <summary>
/// 主键为字符串的实体基类,为系统默认的实体类型
/// </summary>
public class StringEntity : BaseEntity
{
[Browsable(false)]
public string Id { get; set; }
/// <summary>
/// 判断主键是否为空,常用做判定操作是【添加】还是【编辑】
/// </summary>
/// <returns></returns>
public override bool KeyIsNull()
{
return string.IsNullOrEmpty(Id);
}
/// <summary>
/// 创建默认的主键值
/// </summary>
public override void GenerateDefaultKeyVal()
{
Id = Guid.NewGuid().ToString();
}
}
}

View File

@@ -5,7 +5,7 @@ namespace OpenAuth.Repository.Core
/// <summary>
/// 树状结构实体
/// </summary>
public abstract class TreeEntity: Entity
public abstract class TreeEntity: StringEntity
{
/// <summary>
/// 节点语义ID