C# 实体框架脚手架及相关数据
我正在构建一个简单的应用程序来学习实体框架,大致如下和教程所示 我已经成功地编写了代码,首先创建了我的表,我可以查询它们并查看预期的数据以及与种子数据的一对多关系的正确键C# 实体框架脚手架及相关数据,c#,asp.net-mvc,entity-framework,scaffolding,C#,Asp.net Mvc,Entity Framework,Scaffolding,我正在构建一个简单的应用程序来学习实体框架,大致如下和教程所示 我已经成功地编写了代码,首先创建了我的表,我可以查询它们并查看预期的数据以及与种子数据的一对多关系的正确键 public class Organization { public Organization() { Members = new HashSet<Member>(); } [DatabaseGenerated(DatabaseGeneratedOption.Ide
public class Organization
{
public Organization()
{
Members = new HashSet<Member>();
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Member> Members { get; set; }
}
public class Member
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID { get; set; }
public string Name { get; set; }
public string Note { get; set; }
public Guid OrganizationID { get; set; }
public virtual Organization Organization { get; set; }
}
public class OrganizationMemberContext : DbContext
{
public OrganizationMemberContext(DbContextOptions<OrganizationMemberContext> options) : base(options)
{
}
public DbSet<Organization> Organizations { get; set; }
public DbSet<Member> Members { get; set; }
}
我得到了组织的列表,但是在发送到页面的模型中,每个组织的Members属性都是空的(在VS中)
同样,种子数据被正确插入:我可以在数据库中看到Organization.ID值与Member.OrganizationID值完全匹配,这与预期相符 原始代码
public async Task<IActionResult> Index()
{
_context.Organizations.Include(x => x.Members); // use include with no additional queries
return View(await _context.Organizations.ToListAsync()); // made a new query - it knows nothing about include part - Lazy loading still in effect
}
公共异步任务索引()
{
_context.Organizations.Include(x=>x.Members);//使用Include,不带其他查询
return View(wait _context.Organizations.ToListAsync());//创建了一个新查询-它对include part一无所知-延迟加载仍然有效
}
应该是:
public async Task<IActionResult> Index()
{
return View(await _context.Organizations.Include(x => x.Members)ToListAsync()); // query see include and add this information in the result
}
公共异步任务索引()
{
return View(wait _context.Organizations.Include(x=>x.Members)ToListAsync());//查询请参见在结果中包含并添加此信息
}
这可能适用于您:public async Task Index(){返回视图(wait _context.Organizations.Include(x=>.Members.ToListAsync());}在查询内部尝试Include_Include(x=>x.Members.ToListASync());include是在第一条语句中调用的,而不是在第二条语句中调用的。在第二条语句中,您呈现了ViewSomeone post,作为一个答案,它可以工作……似乎延迟加载仍在工作-可以通过在上下文构造函数中使用this.Configuration.LazyLoadingEnabled=false
来禁用它。如果这有帮助,那么在等待部分应该使用Include。
public async Task<IActionResult> Index()
{
return View(await _context.Organizations.Include(x => x.Members)ToListAsync()); // query see include and add this information in the result
}