OBJ.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using SqlSugar;
  2. using System;
  3. using System.ComponentModel.DataAnnotations.Schema;
  4. namespace WCS.Entity
  5. {
  6. /// <summary>
  7. /// 实体类通用基础类
  8. /// </summary>
  9. [Serializable]
  10. public abstract class OBJ
  11. {
  12. /// <summary>
  13. /// ID
  14. /// </summary>
  15. [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "ID")]
  16. [Column(Order = 0)]
  17. public virtual int ID { get; set; }
  18. /// <summary>
  19. /// 是否可用
  20. /// </summary>
  21. [SugarColumn(ColumnDescription = "是否可用")]
  22. public bool ENABLED { get; set; } = true;
  23. /// <summary>
  24. /// 更新用户
  25. /// 仅记录用户ID
  26. /// </summary>
  27. [SugarColumn(ColumnDescription = "更新用户", Length = 50)]
  28. public string EditWho { get; set; } = null!;
  29. /// <summary>
  30. /// 更新时间
  31. /// </summary>
  32. [SugarColumn(ColumnDescription = "更新时间")]
  33. public DateTime EditTime { get; set; } = DateTime.Now;
  34. /// <summary>
  35. /// 版本号
  36. /// </summary>
  37. [SugarColumn(ColumnDescription = "版本号", ColumnDataType = "timestamp", IsNullable = true, IsOnlyIgnoreInsert = true, IsOnlyIgnoreUpdate = true)]
  38. public byte[] VER { get; set; }
  39. /// <summary>
  40. ///
  41. /// </summary>
  42. /// <typeparam name="T"></typeparam>
  43. /// <returns></returns>
  44. public T Copy<T>() where T : OBJ
  45. {
  46. var instance = Activator.CreateInstance<T>();
  47. foreach (var property in GetType().GetProperties())
  48. {
  49. var obj = property.GetValue(this);
  50. typeof(T).GetProperty(property.Name)!.SetValue(instance, obj);
  51. }
  52. return instance;
  53. }
  54. }
  55. }