Entity Framework是.net3.5 sp1中的一个ORM工具,有着使用方便,和Linq结合紧密的优点,但是在实际使用中,它仍然拥有很多缺点,最近在用Entity Framewok做项目的时候感受良多,

今天仅仅记录下EntityFramework在Select上的一些局限

在基于Entity Framework的项目中,由于entity实体严重充血,我们往往都会使用Repository模式对之进行转换,然而,在Repository中对实体进行转换的时候也发现了很多问题.

在linq2sql中,我们也采用Repository模式,这时我们经常采用的转换方式为:

 

from a in Context 
select convertEntity(a);

定义一个convertEntity的方法,就可以轻松将a转化成其他实体对象,然而,在entity framework中是行不通的,它无法支持这种查询,查找资料可知,linq to entites只能支持对象的初始化赋值.

因此,上面的代码可能需要改成:

 

from a in Context 
select 
new b{ 
    xxx
=a.xxx, 
    yyy
=a.yyy 
}

便捷性大大降低,唯一的选择就只能是将构造表达式树然后Select,然而,这样也会出现一些问题,linq to entities能支持的初始化赋值仅仅是简单对象,对于关联的实体赋值转换确是无能为力.

posted on 2009-08-22 16:12  Leven  阅读(3078)  评论(0编辑  收藏  举报
CopyRight 2008, Leven's Blog xhtml | css
Leven的个人Blog