这是我给出错误的方法。
public List<StatusViewModel> GetStatuses(){
using(var ctx = new AppStatusEntities()){
var result = ctx.GetLatestStatuses().Select(r => new StatusViewModel
{
r.ApplicationId,
r.ApplicationName,
r.ApplicationStatus,
r.LastRun
}).ToList();
return result;
}
}StatusViewModel是个POCO。
public class StatusViewModel{
public Guid ApplicationId {get;set;}
public string ApplicationName {get;set;}
public string ApplicationStatus {get;set;}
public DateTime LastRun {get;set;}
}错误消息是
Cannot initialize type 'StatusViewModel' with a collection initializer because it does not implement 'System.Collections.IEnumerable'
我只能假设这与我在实体数据模型中导入函数时指定的存储过程调用的返回类型是"complex“有关。但我不明白为什么这很重要。如果我在ApplicationStatus是表而不是存储过程调用时执行类似ctx.ApplicationStatus.Select(r => new StatusViewModel {...的操作,那么代码将不会出现错误地编译。
发布于 2012-01-22 06:04:32
这样试试:
var result = ctx.GetLatestStatuses().Select(r => new StatusViewModel
{
ApplicationId = r.ApplicationId,
ApplicationName = r.ApplicationName,
ApplicationStatus = r.ApplicationStatus,
LastRun = r.LastRun
}).ToList();存储过程调用和直接访问ObjectSet之间的区别在于Linq实现。存储过程的第一个示例使用应用程序使用Linq-to-Objects的投影,而第二个示例使用SQL中的投影使用Linq-to-entities。
https://stackoverflow.com/questions/8955572
复制相似问题