选择新类型时-实体或复杂类型不能在LINQ到实体查询中构造



当我调用这个linq查询时,我得到以下错误:
实体或复杂类型"数据模型"。

CustomerContact'不能在LINQ to Entities查询中构造。我不明白我在这里做错了什么。通常,当我不与任何其他表连接并且没有导航属性时,我通常会选择cc,但在这种情况下,我需要创建一个新的CustomerContact对象,以便我可以绑定导航属性。 我对此做了一些研究,真的没有办法做到这一点吗?如果我使用匿名类型,我如何转换为CustomerContact,因为我需要最终返回CustomerContact列表到我的应用程序?如果我只是选择cc,那么cc. customername将不会被设置。当我应该能够使用自动生成的EF对象类时,我真的试图避免创建Dtos。
public static IEnumerable<CustomerContacts> GetList(int customerId = null)
{
  using (var context = new AppContext())
  {
    var cList = (from cc in context.CustomerContacts
                   join c in context.Customers on cc.CustomerId equals c.Id
                   where (customerId == null || cc.CustomerId == customerId)
                   select new CustomerContact
                   {
                       Id = cc.Id,
                       FirstName = cc.FirstName,
                       LastName = cc.LastName,
                       Email = cc.Email,
                       // navigation properties
                       CustomerName = c.Name
                   }).ToList();
    return objList;
  }
}

如果我选择cc,那么cc. customername将不会被设置

你可以这样做:

from cc in context.CustomerContacts.Include(cc => cc.CustomerName)

…来为您自动加载导航属性。搜索"EF导航属性延迟加载"

注意,你需要有'using…一些命名空间,我不记得了,让语法工作,因为它使用扩展方法。否则,只需引用想要加载的导航属性的名称,如:

from cc in context.CustomerContacts.Include("CustomerName")

相关内容

  • 没有找到相关文章

最新更新