Entity framework 连接Linq到实体查询
我目前正在首先将数据访问代码从L2S转移到Entity framework db。我有以下问题Entity framework 连接Linq到实体查询,entity-framework,linq-to-sql,entity-framework-4,linq-to-entities,Entity Framework,Linq To Sql,Entity Framework 4,Linq To Entities,我目前正在首先将数据访问代码从L2S转移到Entity framework db。我有以下问题 var emps = (from emp in DataContext.setupEmployees let contacts = DataContext.setupContacts.Where(x => x.EmployeeID == emp.EmployeeID).Select(x => x.Contact)
var emps = (from emp in DataContext.setupEmployees
let contacts = DataContext.setupContacts.Where(x => x.EmployeeID == emp.EmployeeID).Select(x => x.Contact)
select new
{
EmployeeName = emp.EmployeeName,
Contacts = string.Join(", ", contacts.ToArray())
}).ToList();
EF告诉我它无法将方法string.join
转换为存储表达式。一个明显的解决方法是将对象放入内存(ToList、AsEnumerable等),然后调用string.Join
方法,如
var emps = (from emp in DataContext.setupEmployees
let contacts = DataContext.setupContacts.Where(x => x.EmployeeID == emp.EmployeeID).Select(x => x.Contact)
select new
{
EmployeeName = emp.EmployeeName,
Contacts = contacts
}).ToList().Select(x=>new{
x.EmployeeName,
Contacts = string.Join(", ",x.Contacts)
});
这个解决方案工作得很好,但它只是更加冗长,我必须在许多查询中复制select子句,而这些查询过去在L2S中工作得很好
我的问题:是否有任何方法可以避免编写此
列表并调用字符串。在EF查询中加入和类似方法?我建议将联系人创建为IEnumerable
数据类型,而不是字符串数据类型。您可以使用联系人
生成任何您喜欢的逗号分隔的输出等
您可以将查询更改为如下所示:
var emps = (from emp in DataContext.setupEmployees
select new
{
EmployeeName = emp.EmployeeName,
Contacts = DataContext.setupContacts.Where(x => x.EmployeeID == emp.EmployeeID).Select(x => x.Contact)
}).ToList();