首页 新闻 会员 周边

entity framework 自定义sql查询如何在强类型中指定查询的字段

0
悬赏园豆:5 [待解决问题]

  List<Keywords_Info> keyList = base.DataContext.Database.SqlQuery<Keywords_Info>("SELECT TOP " + top + " Id,Keyword FROM Keywords_Info ORDER BY Id DESC").ToList();

 

如何指定查询的字段赋值给 Keywords_Info 对象?上文中就是指定Id和keyword两个字段,上面的查询无法转成强类型,只有:select * from Keywords_Info 的时候才能转换成强类型

jquery09的主页 jquery09 | 菜鸟二级 | 园豆:207
提问于:2013-12-23 08:40
< >
分享
所有回答(4)
0

你的意思是说执行: select Id,keyword from Keywords_Info 时,返回的结果集无法转换成 List<Keywords_Info> ,对吧。如果是的话,你可以在 .ToList() 之前先添加 .Cast<Keywords_Info>.

Launcher | 园豆:45045 (高人七级) | 2013-12-23 09:33

不行的,在Keywords_Info 这个model类里面,还有其他属性,强制转换是不行的,我想要的结果是:我有时候想批量选择字段,而不是每次都是 select * from table

支持(0) 反对(0) jquery09 | 园豆:207 (菜鸟二级) | 2013-12-23 09:41

@jquery09: 

List<Keywords_Info> keyList = base.DataContext.Database.SqlQuery<Keywords_Info>("SELECT TOP " + top + " Id,Keyword FROM Keywords_Info ORDER BY Id DESC")

.Select(o=> new Keywords_Info{Id=o.Id,Keyword=o.Keyword})

.ToList();

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2013-12-23 16:18

@Launcher: 这样也是不对的   同样抛异常出来

支持(0) 反对(0) jquery09 | 园豆:207 (菜鸟二级) | 2013-12-23 21:46

@jquery09: 

public class A

{

   public string Id{get;set}

   public string Keyword{get;set}
}

List<Keywords_Info> keyList = base.DataContext.Database.SqlQuery<A>("SELECT TOP " + top + " Id,Keyword FROM Keywords_Info ORDER BY Id DESC")

.Select(o=> new Keywords_Info{Id=o.Id,Keyword=o.Keyword})

.ToList();

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2013-12-24 09:19

@jquery09: 

List<Keywords_Info> keyList = base.DataContext.Database.SqlQuery("SELECT TOP " + top + " Id,Keyword FROM Keywords_Info ORDER BY Id DESC")

.Select(o=> new Keywords_Info{Id=o.Id,Keyword=o.Keyword})

.ToList();

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2013-12-24 09:20
0

既然如此就不要强求了.

看看这个

http://www.cnblogs.com/humble/p/3380065.html

迅捷网络[来送福利] | 园豆:576 (小虾三级) | 2013-12-23 10:19
0

该问题的解决方法是, sql语句中使用select * 来取代具体的某几个列, 如果sql语句返回的列少于(具体化)实体的属性的个数,那么EF在具体化的时候将抛出一个异常。 如果sql 返回的列 多余具体化的实体属性的个数,那么EF将会忽视多出的列。

这个问题,我也是找了一下资料。

参考资料:http://www.cnblogs.com/shanyou/archive/2012/11/18/2776357.html

袁家小黑球 | 园豆:1045 (小虾三级) | 2013-12-23 22:01
0

学习了。

大楚打码人 | 园豆:4313 (老鸟四级) | 2014-01-21 15:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册