看了您这篇文章
http://www.cnblogs.com/dudu/archive/2011/03/31/entity_framework_select_new.html#commentform
有些问题想请教,这篇文章最后说:【于是,我们新建了一个与BlogEntry具有同样属性的BlogEntryClone,
让人惊喜的是:运行成功,未出现异常。猜测被证实,果然与BlogDbContext中注册了BlogEntry有关。
惊喜之后是困惑,什么要有这个限制?而且,BlogEntryClone与BlogEntry不能有任何联系,继承或聚合都不行。】
那也就是说,这种情况,也就相当于返回了一个匿名类咯?只不过这不是匿名类是我先定义好的类。那我最终想要的结果是像Hibernate里面那样,直接返回查询的这个对象,只是查询部分属性,提高效率。按此文章方法,返回的就是另一个Entity了。要么我就用这个Entity,要么在进行一次Entity转化。额。这个。。 难道就不能想Hibernate里面那样返回原对象,只查部分属性吗。不用原始sql的情况下。。
我目前想到的方法是在定义映射关系时,将不需要查询的属性忽略掉
额,但是我其它地方要用啊,比如插入。这怎么破。。
查是只查部分,如果去掉的话,插入的时候不是 要插全部吗。。呜呜
@BKY丶AIR: 不知最新版EF能不能破,有空研究一下
select new 原对象名 { Title = e.Title, Body = t.Text, aaa属性 = null, bbb属性 = null .... }),这样可以么?
不可以哦。亲。。这就是问题所在 只能用匿名类。蛋疼啊
我想问个问题,如果 Hibernate 只返回一个对象的部分属性的话,那么该对象还有状态跟踪吗?既我写下如下的代码:
using(DbContext ctx = new DbContext())
{
var entity = ctx.DbSet<T>.First("Field1,Field2");
entity.Field10 = "sdfdf";
ctx.SaveChanges();
}
我觉得会出现异常,框架根本无法更新数据啊。。
@clcvc: 你写段代码测试下嘛!
@Launcher: 试了一下,无法对匿名类型属性赋值,是只读的,第二句话编译不能通过呀。
@clcvc: 你是用 Hibernate 做的吗?我看他们说 Hibernate 可以反回对象的部分属性,所以我想知道在Hibernate中,返回部分属性的对象修改后,能否更新回DB中去。
@Launcher: 哦。。刚才用ef试的。这个Hibernate还真没试过啊。
@clcvc: 我也没试过,所以我才想问问用 Hibernate 的人,因为我才能预测 EF 以后的版本会不会加入返回对象部分属性的功能。
可以的,有一些要求。比如必填项,必须在包含在所查字段里,,然后用Hibernate自己的方法查部分字段,可以在反向更新这个类的。。。
@BKY丶AIR: 能给段代码示例下吗?我看是否同 EF 的代码模式一致。
@Launcher: 就是Hibernate中查询的时候 用new啊 new 对象(部分属性) ,然后返回的是对象,可以直接按照正常情况操作这个对象啊。。
@Launcher: 如果非要代码的化。明天有空给你找段。。
@BKY丶AIR: 一定要给代码。