无法将lambda表达式转换为类型'string',因为它不是委托类型

Lia*_*am 15 lambda repository entity-framework-4 asp.net-mvc-3

在我的控制器中我试图使用包含EF4来选择相关实体,但lambda表达式抛出以下错误,

我有在Entity类中定义的相关实体

public class CustomerSite
{
    public int CustomerSiteId { get; set; }
    public int CustomerId { get; set; }
    public virtual Customer Customer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的控制器中我有

 var sites = context.CustomerSites.Include(c => c.Customer);

 public ViewResult List()
 {
    var sites = context.CustomerSites.Include(c => c.Customer);
    return View(sites.ToList());
 }
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出我正确的方向我在这里做错了吗?

ama*_*jee 88

好吧,帖子很老了,但只是回复这里更新它.嗯,Entity Framework 4.1Include()方法有扩展方法,它也接受lambda表达式.所以

context.CustomerSites.Include(c => c.Customer);
Run Code Online (Sandbox Code Playgroud)

是完全有效的,你需要做的就是使用这个:

using System.Data.Entity;
Run Code Online (Sandbox Code Playgroud)


Wil*_*ill 11

Include是System.Data.Entity命名空间中的扩展方法,需要添加:

using System.Data.Entity;
Run Code Online (Sandbox Code Playgroud)

然后你可以使用lambda表达式而不是字符串.


Dar*_*rov 6

Include方法需要一个字符串,而不是lambda:

public ViewResult List()
{
    var sites = context.CustomerSites.Include("Customer");
    return View(sites.ToList());
}
Run Code Online (Sandbox Code Playgroud)

当然,您可以编写一个自定义扩展方法,该方法可以使用lambda表达式,并使您的代码与某些魔术字符串无关,并且重构更友好.

但是无论你做什么,请不要将EF自动生成的对象传递给你的视图.使用视图模型.