从连接的2表中获取数据

时间:2019-01-21 10:03:11

标签: sql-server asp.net-mvc entity-framework model-view-controller ado-net-source

我使用ado net实体数据模型从现有数据库中创建了2个数据模型。这些表相互关联。第一个表是类别表,第二个表是产品。因此,每个类别都有很多产品。我想在视图中显示类别的某些列,以及同一类别中相同的产品。我对这种简单的结构感到困惑。我离开mvc了一段时间。我需要解决这个问题。请帮忙。

1 个答案:

答案 0 :(得分:0)

您需要使用视图模型。视图模型与MV *体系结构模式有关,用于将数据传递到视图或从视图传递数据。我将尝试用简单的术语进行解释。让我们考虑一下您有两个表:

  

员工

---------------------------------------
| Id | Name       | Designation       |
---------------------------------------
| 1  | John Doe   | Software Engineer |
---------------------------------------
| 2  | John Smith | Test Engineer     |
---------------------------------------
  

工资

----------------------------------------
| Id  | EmployeeId  | EmployeeSalary   |
----------------------------------------
| 1   | 1           | $10,000          |
----------------------------------------
| 2   | 2           | $10,000          |
----------------------------------------

现在要访问代码中的这两个表,您已经使用ORM创建了数据实体,它将创建两个类:

  

Employee.cs

public class Employee
{
    public int Id { get; set; }

    public string Name { get; set; }

    public string Designation { get; set; }
}
  

Salary.cs

public class Salary
{
    public int Id { get; set; }

    public int EmployeeId { get; set; }

    public long EmployeeSalary { get; set; }
}

现在要使用这两个模型在UI上表示有意义的数据,您可以创建一个具有所有必要数据实体的ViewModel,并将其通过控制器传递给视图:

  

EmployeeViewModel.cs

public class EmployeeViewModel
{
    public Employee EmployeeDetail { get; set; }

    public Salary EmployeeSalaryDetail { get; set; }
}
  

EmployeeController:

public class EmployeeController 
{
    public ActionResult Index()
    {
        var model = new EmployeeViewModel();
        return View(model);
    }
}

对于数据实体和视图模型之间的显着差异,请进行检查; Is it possible to create view models by out of models created from database tables using entity framework DB first approach?