OBJ.cs 1.9 KB

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