自老毛开始发布他的MySoft.Data系列组件,也陆续开始写Mysoft.Data使用系列的文章,我也尝试着写一点自己在研究和使用MySoft.Data过程中的一些心得。

  

  本章介绍Mysoft.Data在作为一个ORM组件应用在系统中时,如何把MySoft.Data生成的实体转换成“干净”的实体,以实现系统和ORM之间的解耦。

  大家都知道,一般ORM组件会有他们自己的特定的实体,例如EF的实体,或者其他ORM组件的实体,要么通过Attribute标记,要么xml文档配置,总而言之就是要把实体的结构跟数据表结构联系起来,MySoft.Data也不例外,大家来看它生成的实体:

  1 /// <summary>
  2     /// 表名:Category 主键列:CategoryID
  3     /// </summary>
  4     [SerializableAttribute()]
  5     public partial class Category : Entity
  6     {
  7 
  8         protected Int32 _CategoryID;
  9 
 10         protected String _Name;
 11 
 12         protected Int32 _UserID;
 13 
 14         public Int32 CategoryID
 15         {
 16             get
 17             {
 18                 return this._CategoryID;
 19             }
 20             set
 21             {
 22                 this.OnPropertyValueChange(_.CategoryID, _CategoryID, value);
 23                 this._CategoryID = value;
 24             }
 25         }
 26 
 27         public String Name
 28         {
 29             get
 30             {
 31                 return this._Name;
 32             }
 33             set
 34             {
 35                 this.OnPropertyValueChange(_.Name, _Name, value);
 36                 this._Name = value;
 37             }
 38         }
 39 
 40         public Int32 UserID
 41         {
 42             get
 43             {
 44                 return this._UserID;
 45             }
 46             set
 47             {
 48                 this.OnPropertyValueChange(_.UserID, _UserID, value);
 49                 this._UserID = value;
 50             }
 51         }
 52 
 53         /// <summary>
 54         /// 获取实体对应的表名
 55         /// </summary>
 56         protected override Table GetTable()
 57         {
 58             return new Table<Category>("Category");
 59         }
 60 
 61         /// <summary>
 62         /// 获取实体中的标识列
 63         /// </summary>
 64         protected override Field GetIdentityField()
 65         {
 66             return _.CategoryID;
 67         }
 68 
 69         /// <summary>
 70         /// 获取实体中的主键列
 71         /// </summary>
 72         protected override Field[] GetPrimaryKeyFields()
 73         {
 74             return new Field[] {
 75                         _.CategoryID};
 76         }
 77 
 78         /// <summary>
 79         /// 获取列信息
 80         /// </summary>
 81         protected override Field[] GetFields()
 82         {
 83             return new Field[] {
 84                         _.CategoryID,
 85                         _.Name,
 86                         _.UserID};
 87         }
 88 
 89         /// <summary>
 90         /// 获取列数据
 91         /// </summary>
 92         protected override object[] GetValues()
 93         {
 94             return new object[] {
 95                         this._CategoryID,
 96                         this._Name,
 97                         this._UserID};
 98         }
 99 
100         /// <summary>
101         /// 给当前实体赋值
102         /// </summary>
103         protected override void SetValues(IRowReader reader)
104         {
105             if ((false == reader.IsDBNull(_.CategoryID)))
106             {
107                 this._CategoryID = reader.GetInt32(_.CategoryID);
108             }
109             if ((false == reader.IsDBNull(_.Name)))
110             {
111                 this._Name = reader.GetString(_.Name);
112             }
113             if ((false == reader.IsDBNull(_.UserID)))
114             {
115                 this._UserID = reader.GetInt32(_.UserID);
116             }
117         }
118 
119         public override int GetHashCode()
120         {
121             return base.GetHashCode();
122         }
123 
124         public override bool Equals(object obj)
125         {
126             if ((obj == null))
127             {
128                 return false;
129             }
130             if ((false == typeof(Category).IsAssignableFrom(obj.GetType())))
131             {
132                 return false;
133             }
134             if ((((object)(this)) == ((object)(obj))))
135             {
136                 return true;
137             }
138             return false;
139         }
140 
141         public class _
142         {
143 
144             /// <summary>
145             /// 表示选择所有列,与*等同
146             /// </summary>
147             public static AllField All = new AllField<Category>();
148 
149             /// <summary>
150             /// 字段名:CategoryID - 数据类型:Int32
151             /// </summary>
152             public static Field CategoryID = new Field<Category>("CategoryID");
153 
154             /// <summary>
155             /// 字段名:Name - 数据类型:String
156             /// </summary>
157             public static Field Name = new Field<Category>("Name");
158 
159             /// <summary>
160             /// 字段名:UserID - 数据类型:Int32
161             /// </summary>
162             public static Field UserID = new Field<Category>("UserID");
163         }
164     }

相关文章:

  • 2021-11-24
  • 2022-12-23
  • 2022-12-23
  • 2021-09-19
  • 2022-12-23
  • 2021-12-29
  • 2022-02-21
  • 2021-12-15
猜你喜欢
  • 2021-12-23
  • 2021-10-23
  • 2022-01-05
  • 2021-09-16
  • 2021-09-17
相关资源
相似解决方案