Asp.net 实体MVC和ViewModels一对多示例
我有一个简单的例子 我想显示公司和员工的列表Asp.net 实体MVC和ViewModels一对多示例,asp.net,entity-framework,viewmodel,Asp.net,Entity Framework,Viewmodel,我有一个简单的例子 我想显示公司和员工的列表 ACME David Simon Zac Microsoft Kevin Paul 目前,我执行一个linq查询,返回公司模型,然后遍历模型树以获取员工。这很好,但是在上面的示例3查询中,我看到了它的作用。一个用于公司,然后两个用于员工的查询,每个公司一个 我想知道我是否最好使用一个ViewModel来表示数据并填充它。然而,当尝试构建视图模型时,我不知道如何在不进行多个查询的情况下构建它 var data
ACME
David
Simon
Zac
Microsoft
Kevin
Paul
目前,我执行一个linq查询,返回公司模型,然后遍历模型树以获取员工。这很好,但是在上面的示例3查询中,我看到了它的作用。一个用于公司,然后两个用于员工的查询,每个公司一个
我想知道我是否最好使用一个ViewModel来表示数据并填充它。然而,当尝试构建视图模型时,我不知道如何在不进行多个查询的情况下构建它
var data =
from company in db.Companies
join employee in db.Employees on company.companyId equals employee.companyId
orderby company.name, employee.name
select new { companyName = company.name, employeeName = employee.name }
是否有一种简单的方法将其链接到视图模型,或者是否有另一种最佳实践方法来执行类似的简单操作。假设您在Entity Framework中正确连接了导航属性,您应该能够执行以下操作:
var data = db.Companies
.Include(i => i.Employees)
.Tolist();
然后,您可以在它们之间循环:
foreach (var company in data)
{
foreach (var employee in company.Employees)
{
}
}
不要忘记使用System.Data.Entity包含
或您将无法使用强类型的.Include()
方法。假设您已正确连接实体框架中的导航属性,您应该能够执行以下操作:
var data = db.Companies
.Include(i => i.Employees)
.Tolist();
然后,您可以在它们之间循环:
foreach (var company in data)
{
foreach (var employee in company.Employees)
{
}
}
不要忘记使用System.Data.Entity包含
或您将无法使用强类型的.Include()
方法。您可以通过添加ToList()
在一次往返中从数据库获取数据:
或者获取公司类型而不是匿名类型
var data = db.Companies.Include(t => t.Employees )
.Select(t => new
{
t.name,
Employees = t.Employees .Select(p => new { p.name})
}).ToList();
或者,如果要使用ViewModel,请创建ViewModel:
public class CompanyVm
{
public string name { get; set; }
public IEnumerable<Employee> Employees{ get; set; }
}
public class Employee
{
public string name { get; set; }
}
通过添加
ToList()
,您可以在一次往返中从数据库中获取数据:
或者获取公司类型而不是匿名类型
var data = db.Companies.Include(t => t.Employees )
.Select(t => new
{
t.name,
Employees = t.Employees .Select(p => new { p.name})
}).ToList();
或者,如果要使用ViewModel,请创建ViewModel:
public class CompanyVm
{
public string name { get; set; }
public IEnumerable<Employee> Employees{ get; set; }
}
public class Employee
{
public string name { get; set; }
}
不确定这是一个怎样的ViewModel示例不确定这是一个怎样的ViewModel示例