[英]Code First EF6 - How to translate to a custom object thats not an entity
我有一个存储过程返回2列。 第一个是实体(UserId)的ID列,第二个是对多少个UserIds(Count)的计数。
在代码中,我想将其翻译成Dictionary,其中User
是EF实体。
var result = ((IObjectContextAdapter)dbContext).ObjectContext.Translate<Dictionary<User, int>>(reader).FirstOrDefault();
这将返回一个空的Dictionary,并且似乎翻译无法按我希望的方式工作。
我在猜测,因为我只返回UserId,所以它无法实现为完整的User实体。
有人可以提供一个示例,说明如何获得所需的最终结果吗?
查看文档 :
提供的DbDataReader必须包含映射到请求的实体类型的数据。
因此,您的代码有两件事是错误的:
您必须使用存储过程返回的id值通过单独的查询来获取用户。 遵循以下原则:
var sprocValues = GetStoredProcedureValues();
// Let's assume this returns a List of Tuple<int,int>
var usrIds = sprocValues.Select(t => t.Item1).ToArray();
var users = dbContext.Users.Where(u => usrIds.Contains(u.UserID)).ToArray();
var result = from u in users
join t in sprocValues on u.UserID equals t.Item1
select new { User = u, Count = t.Item2 };
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.