如何包含子类
本文关键字:子类 何包含 | 更新日期: 2023-09-27 18:09:29
谁能帮帮我这个。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);
但是这并不包括importtitemlisttemplate类中的importtitemlist。我想我需要包括属性ImportItemList,但我不知道如何。
我试着这样想:
ImportItemListTemplate tmp = context.ImportItemListTemplates.Include(i => i.ImportItemList).SingleOrDefault(x => x.Id == id);
但是它不起作用。错误:
"无法将lambda表达式转换为'string'类型,因为它不是。委托类型"
非常感谢你的帮助
您的代码应该如下所示,
ImportItemListTemplate tmp = context.ImportItemListTemplates.Include("ImportItemList").SingleOrDefault(x => x.Id == id);
试试这个:
ImportItemListTemplate tmp = context.ImportItemListTemplates
.Include(i => i.ImportItemList)
.Where(x => x.Id)
.SingleOrDefault();
DbSet.Include
接受字符串,所以它不会满意lambda。
我猜你需要的是IQueryable<T>.Include
扩展方法,它在System.Data.Entity
命名空间中,特别是接受表达式的重载。有了它,你可以使用像
query.Include(e => e.Level1Collection)
从数据库加载集合属性。
如果名称空间没有添加到using
列表中,请添加该名称空间并再次尝试代码。