我知道这个问题可能对其他人没有帮助,但我不知道任何其他地方可以提出类似的问题,因为我正在学习如何编码!如果您要删除此帖子,请告诉我在哪里可以提出此类问题?
// This part is Auto Generated
namespace SimpleScrum.Models
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class SimpleScrumEntities : DbContext
{
public SimpleScrumEntities()
: base("name=SimpleScrumEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<ProductBacklogItem> ProductBacklogItems { get; set; }
public DbSet<Product> Products { get; set; }
public DbSet<Role> Roles { get; set; }
public DbSet<SprintBacklogItem> SprintBacklogItems { get; set; }
public DbSet<Sprint> Sprints { get; set; }
public DbSet<TeamMember> TeamMembers { get; set; }
public DbSet<User> Users { get; set; }
public DbSet<Today> Todays { get; set; }
}
}
// End of Auto Generated Part
public class SprintController :BaseController {
private readonly SimpleScrumEntities _db = new SimpleScrumEntities();
public ActionResult Index(Guid productID)
{
// what single means and why we can't change it with Where clause
var product = _db.Products.Include("Sprints").Single(p => p.ID == productID);
var indexVM = new SprintIndex
{
ProductID = productID,
ProductName = product.Name
};
foreach (var sprint in product.Sprints)
{
indexVM.Sprints.Add(new SprintListItem
{
ID = sprint.ID,
StartDate = sprint.StartDate,
EndDate = sprint.EndDate
});
}
产品var已在sprintController
类中创建,该类将存储结果的单个返回值
_db.Products.Include("Sprints").Single(p => p.ID == productID);
但我不明白为什么在循环中我们指向product.Sprints
?我们是否以及为什么我们可以访问其他属性,例如product.Roles
?
当我将鼠标悬停在Single
中的...("Sprints").Single...
子句时,它表示它返回满足特定条件的序列中唯一的元素,如果不止一个这样,则抛出异常元素存在。因此,如果产品只保留一个元素,那么在下面的代码行中我们是否在product.Sprints
中有一个循环?
答案 0 :(得分:0)
“Include(”Sprint“)”不返回Sprint对象。它包括请求中的相关对象/表。 MSDN
Single方法返回一个有很多sprint的产品。
_db.Products.Include(“Sprints”)。Single(p =&gt; p.ID == productID)是Product。在循环中,我们使用Sprint对象。