91 lines
2.3 KiB
C#
91 lines
2.3 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel.DataAnnotations.Schema;
|
||
using System.ComponentModel;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace CloudBuilder.Core.DatabaseAccessor.Entity
|
||
{
|
||
/// <summary>
|
||
/// 实体类基类
|
||
/// </summary>
|
||
public abstract class EntityBase<TKey> : IEntity<TKey>
|
||
{
|
||
/// <summary>
|
||
/// 获取或设置 编号
|
||
/// </summary>
|
||
[DisplayName("编号")]
|
||
[NotMapped]
|
||
public TKey? Id { get; set; }
|
||
|
||
public virtual string GetSelectFrom()
|
||
{
|
||
return null;
|
||
}
|
||
|
||
public virtual string GetSelectCountFrom(string sqlWhere)
|
||
{
|
||
return null;
|
||
}
|
||
|
||
public virtual string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere)
|
||
{
|
||
return null;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 判断两个实体是否是同一数据记录的实体
|
||
/// </summary>
|
||
/// <param name="obj">要比较的实体信息</param>
|
||
/// <returns></returns>
|
||
public override bool Equals(object obj)
|
||
{
|
||
if (obj == null)
|
||
{
|
||
return false;
|
||
}
|
||
if (!(obj is EntityBase<TKey> entity))
|
||
{
|
||
return false;
|
||
}
|
||
return IsKeyEqual(entity.Id, Id);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 实体ID是否相等
|
||
/// </summary>
|
||
public static bool IsKeyEqual(TKey id1, TKey id2)
|
||
{
|
||
if (id1 == null && id2 == null)
|
||
{
|
||
return true;
|
||
}
|
||
if (id1 == null || id2 == null)
|
||
{
|
||
return false;
|
||
}
|
||
|
||
return Equals(id1, id2);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 用作特定类型的哈希函数。
|
||
/// </summary>
|
||
/// <returns>
|
||
/// 当前 <see cref="T:System.Object"/> 的哈希代码。<br/>
|
||
/// 如果<c>Id</c>为<c>null</c>则返回0,
|
||
/// 如果不为<c>null</c>则返回<c>Id</c>对应的哈希值
|
||
/// </returns>
|
||
public override int GetHashCode()
|
||
{
|
||
if (Id == null)
|
||
{
|
||
return 0;
|
||
}
|
||
return Id.ToString().GetHashCode();
|
||
}
|
||
}
|
||
}
|