[英]Using Include in Entity Framework 4 with lambda expressions
[英]Gernerate List using Entity Framework and lambda expressions in C#
對於我自己的實踐,我正在構建一個小型ASP.NET網站,該網站顯示現有數據庫的數據內容。
為了使用數據庫,我正在使用Entity Framework,並且我想在連接中使用lambda表達式。
實際上我的數據庫中有6個表:
Projects
(ID,ProjectName) Categories
(ID,CategoryName) Users
(ID,用戶名) Parts
(ID,零件名) ProjectCategoryPart
(ProjectID,CategoryID,PartID,PartExists) ProjectCategoryUser
(ProjectID,CategoryID,UserID)
Project
都有n
Categories
Category
有1
User
Project
和Category
,都有n
帶有PartExists
Parts
現在,我想為表一中的一個項目創建一個包含以下信息的列表
Category User Parts Left Total Parts
Category_1 RelatedUserName PartCountLeft PartCountTotal
Category_2 RelatedUserName PartCountLeft PartCountTotal
Category_n RelatedUserName PartCountLeft PartCountTotal
例如,在這里,我實際上正在使用的一個代碼行從表Projects中獲取項目的數據:
myList = DatabaseEntities.Projects.Single(project => project.Number == sendNumber);
有人可以為我提供創建列表所需的代碼嗎?
到目前為止,我只能創建簡單的數據庫請求,因為很難找到顯示更多信息的示例。
如評論中所述,您的設計可能需要做一些工作,但是如果您試圖專注於聚合部分,則可以解決它。 如果您的班級具有類似於以下內容的導航屬性:
public class Project
{
public int Id { get; set; }
public string ProjectName { get; set; }
// if you want multiple users you will need to change this
public int UserId{ get; set; }
public User User { get; set; } // nav to user
public ICollection<ProjectPart> ProjectParts { get; set; }
}
public class ProjectPart
{
public int PartId { get; set; } // Be consistent and call this ID as below
public string PartName { get; set; }
public bool? PartExists { get; set; }
public string CategoryName { get; set; }
public int ProjectId { get; set; }
public Project Project { get; set; } // nav to project
}
public class User
{
public int Id { get; set; }
public string UserName{ get; set; }
public ICollection<Project> Projects { get; set; }
}
接下來,我將為結果構建一個視圖模型:
public class ProjectPartViewModel
{
public string Category { get; set; }
public string Name { get; set; }
public int PartsCount { get; set; }
public int PartsExistCount { get; set; }
}
然后查詢:
var projectPartCounts = context.ProjectParts.AsNoTracking()
.GroupBy(pp => new { pp.CategoryName, pp.Project.User.UserName })
.Select(g => new PropjectPartsViewModel {
Category = g.Key.CategoryName,
Name = g.Key.UserName,
PartsCount = g.Count(),
PartsExistCount = g.Count(pp => pp.PartsExist == true)
})
.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.