2014-04-07 165 views
-3

我知道這個問題可能對其他人沒有幫助,但我不知道任何其他地方可以提問類似的問題,因爲我只是在學習如何編寫代碼!如果你刪除這個帖子,請讓我知道我在哪裏可以問這種類型的問題?請幫我理解這段ASP.NET代碼

// 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     
      });           
     } 
  1. 產品的變種已經在sprintController類是要存儲結果

    _db.Products.Include("Sprints").Single(p => p.ID == productID); 
    

    的一個返回值被創建,但我不明白爲什麼在循環中,我們」重新指向product.Sprints?我們和爲什麼我們可能有權訪問其他屬性,例如product.Roles

  2. 當我懸停在...("Sprints").Single...Single子句據說它返回滿足特定條件的序列中的唯一元件,並且如果多於一個這樣的元素存在拋出異常。因此,如果產品將只保留一個元素,那麼我們在product.Sprints中有一個循環?

回答

0

「Include(」Sprint「)」不返回Sprint對象。它包含請求中的相關對象/表。 MSDN

Single方法返回一個有許多衝刺的產品。

_db.Products.Include(「Sprint」)。Single(p => p.ID == productID)是Product。在循環中,我們使用Sprint對象。

+0

非常感謝!我在哪裏可以找到Linq命令的參考幫助,以便我更好地理解它們?還有關於已創建的產品變量,是否可以訪問其他產品屬性?像TeamMembers或..? – curiousStudent

+0

@curiousStudent我認爲,您可以閱讀關於實體框架(和代碼優先),LINQ的任何文章,並瞭解它們的工作原理。 – eXit

+0

@curiousStudent檢查http://www.asp.net/mvc/tutorials它可能有幫助 – eXit