OBJ.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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 AddWho { get; set; }
  29. /// <summary>
  30. /// 创建时间
  31. /// 新增数据时自动获取服务器时间
  32. /// </summary>
  33. [SugarColumn(ColumnDescription = "创建时间", InsertServerTime = true)]
  34. public virtual DateTime AddTime { get; set; }
  35. /// <summary>
  36. /// 更新用户
  37. /// 仅记录用户ID
  38. /// </summary>
  39. [SugarColumn(ColumnDescription = "更新用户", Length = 50, IsNullable = true)]
  40. public string EditWho { get; set; }
  41. /// <summary>
  42. /// 更新时间
  43. /// 更新数据时自动获取服务器时间
  44. /// </summary>
  45. [SugarColumn(ColumnDescription = "更新时间", UpdateServerTime = true, IsNullable = true)]
  46. public DateTime EditTime { get; set; }
  47. /// <summary>
  48. /// 版本号
  49. /// </summary>
  50. [SugarColumn(ColumnDescription = "版本号", ColumnDataType = "timestamp", IsNullable = true, IsOnlyIgnoreInsert = true, IsOnlyIgnoreUpdate = true)]
  51. public byte[] VER { get; set; }
  52. /// <summary>
  53. ///
  54. /// </summary>
  55. /// <typeparam name="T"></typeparam>
  56. /// <returns></returns>
  57. public T Copy<T>() where T : OBJ
  58. {
  59. var instance = Activator.CreateInstance<T>();
  60. foreach (var property in GetType().GetProperties())
  61. {
  62. var obj = property.GetValue(this);
  63. typeof(T).GetProperty(property.Name)!.SetValue(instance, obj);
  64. }
  65. return instance;
  66. }
  67. }
  68. }