我的ORM(一)—重复造轮子.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ORM在我们平时项目里是必不可少的,也是最重要的系统架构之一,它提供对数据访问的底层实现,比较出名的有Java里的Hibernate、.Net里的NHibernate和Linq,这些都是很成熟的ORM框架,今天我要说的是我的ORM,这当然不能和前面说的那些ORM比,这里仅当自己造轮子学习。 使用Attribute元数据 用过Hibernate等ORM的童鞋都知道,可以使用XML文件来配置数据表和实体对象的关系,虽然说这样可以更灵活一些,但我是比较反感这些繁杂的配置的,讨厌一大堆的配置文件,所以我这里是先采用了元数据的方法,将这些配置直接嵌入在代码里,使用Attribute元数据来标识实体对象和属性。一个简单的Breast实体类如下: [EntityFlag(TableName = bl_breast)] public class Breast: ModelBase { private User user; public User User { get { return user; } set { user = value; } } private Int32 breastId; [ColumnFlag( PrimaryKey=true)] public Int32 BreastId { get { return breastId; } set { breastId = value; } } private Int32 userId; [ColumnFlag] public Int32 UserId { get { return userId; } set { userId = value; } } private String breast; [ColumnFlag(ColumnName = breast)] public String BreastContent { get { return breast; } set { breast = value; } } private DateTime addDate; [ColumnFlag] public DateTime AddDate { get { return addDate; } set { addDate = value; } } 上面的EntityFlag和ColumnFlag都是Attribute元数据,其中的TableName和ColumnName、PrimaryKey分别为元数据属性,代表对应的表名和列名。获取的时候也很简单,使用GetCustomAttributes能返回对象的所有元数据,获取对象所有ColumnFlag标识方法如下: public static ListColumnFlag GetPropertyAnnotations(Type t) { ListColumnFlag propertyAnnotations = new ListColumnFlag(); PropertyInfo[] properties = t.GetProperties(); foreach (PropertyInfo property in properties) { object[] attrs = property.GetCustomAttributes(true); foreach (object attr in attrs) { if (attr is ColumnFlag) { ColumnFlag propert

文档评论(0)

liudao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档