有人可以帮我解决这个问题.net mvc问题:
我有这些课程:
public class ImportItem
{
[Key]
public int Id { get; set; }
}
public class ImportItemListTemplate
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public List<ImportItem> ImportItemList { get; set; }
}
public class Context : DbContext
{
public DbSet<ImportItemListTemplate> ImportItemListTemplates { get; set; }
}
在控制器中我需要设置:
Context context = new Context();
int id = ...;
ImportItemListTemplate tmp = context.ImportItemListTemplates.Find(id);
但是这不包括ImportItemListTemplate类中的ImportItemList。我想我需要包含属性ImportItemList,但我不知道如何。
我尝试了一些想法:
ImportItemListTemplate tmp = context.ImportItemListTemplates.Include(i => i.ImportItemList).SingleOrDefault(x => x.Id == id);
但它不起作用。错误:
“无法将lambda表达式转换为'string'类型,因为它不是 委托类型“
非常感谢你的帮助。
答案 0 :(得分:0)
您的代码应如下所示,
ImportItemListTemplate tmp = context.ImportItemListTemplates.Include("ImportItemList").SingleOrDefault(x => x.Id == id);
答案 1 :(得分:0)
试试这个:
ImportItemListTemplate tmp = context.ImportItemListTemplates
.Include(i => i.ImportItemList)
.Where(x => x.Id)
.SingleOrDefault();
答案 2 :(得分:0)
DbSet.Include
接受一个字符串,因此对lambda不满意。
我猜您需要的是System.Data.Entity
名称空间中的IQueryable<T>.Include
扩展方法,尤其是接受表达式的overload。有了它,您可以使用
query.Include(e => e.Level1Collection)
从数据库加载集合属性
如果名称空间未添加到using
列表中,请添加名称空间并再次尝试使用该代码。