您的位置:首页 > 其它

MySoft.Data发现系列一:实体的解耦

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

  

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

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

代码 1 /// <summary>
2 /// 获取评论列表
3 /// </summary>
4 /// <param name="status">状态</param>
5 /// <param name="pageNumber">页码</param>
6 /// <param name="pageSize">分页大小</param>
7 /// <returns></returns>
8 public IList<IComments> GetList(CommentStatus status, int pageNumber, int pageSize)
9 {
return repository.GetSession().From<Comments>()
.Where(Comments._.CommentStatus == status)
.OrderBy(Comments._.CommentTimeGMT.Desc)
.GetPage(pageSize)
.ToList(pageNumber).ConvertTo<CommentsModel, IComments>();//这里转化了成了SourceList<IComments>,而由于SourceList实现了IList<T>,因此兼容IList<IComments>了
}

//再来看这几个个扩展方法

/// <summary>
/// 转换成实体
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <param name="entity"></param>
/// <returns></returns>
public static TEntity ToEntity<TEntity>(this DsJian.Interface.Model.IEntity entity)
where TEntity : MySoft.Data.Entity
{
return new MySoft.Data.SourceList<DsJian.Interface.Model.IEntity>(entity).ConvertTo<TEntity>()[0];
}

/// <summary>
/// 转换成实体
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <param name="entity"></param>
/// <returns></returns>
public static TEntity ToEntity<TEntity>(this MySoft.Data.Entity entity)
{
return new MySoft.Data.SourceList<MySoft.Data.Entity>(entity).ConvertTo<TEntity>()[0];
}

/// <summary>
/// 转换成接口
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <typeparam name="IEntity"></typeparam>
/// <param name="entity"></param>
/// <returns></returns>
public static IEntity ToIEntity<TEntity, IEntity>(this MySoft.Data.Entity entity)
where IEntity : DsJian.Interface.Model.IEntity
{
return new MySoft.Data.SourceList<MySoft.Data.Entity>(entity).ConvertTo<TEntity, IEntity>()[0];
}我不用说,大家也该知道怎么用了。

OK,我是个不怎么会写东西的人,文章中可能有什么胡言乱语的云云,请大家爱护环境,留住你们手中紧攥的臭鸡蛋,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐