从MVC中的多个表中选择数据

时间:2014-02-05 22:45:32

标签: sql-server asp.net-mvc asp.net-mvc-4

我正在创建我的第一个实质性.NET MVC应用程序。我遇到了一个问题,我不太确定正确的方法。

在我的应用程序中,我有一个相当大的数据库。对于许多功能,我需要从最多5个表中选择数据并将其发送回视图,我不太确定如何进行操作,因为视图采用模型或视图模型?

我非常了解View Models的概念,但每次我需要从多个表发送数据时才创建一个唯一的解决方案吗?如果是这样,任何人都可以告诉我做这件事时的最佳做法

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:1)

是的,你必须拥有每个视图的视图模型。我处理大约600个视图的应用程序,我们尝试重新循环视图模型,它最终流下了眼泪。现在每个视图都有一个模型(主要是)。

要从多个表发送数据,您需要在表上运行联接并选择视图模型。

这里我假设您使用实体框架:

public class ComplexViewModel
{
    public String Name { get; set; }
    public String Category { get; set; }
    public String Level { get; set; }
}

var db = new MyDbContext();
var result = from name in db.Names
             join category in db.Categories on name.CategoryId equals category.CategoryId
             join level in db.Levels on category.LevelId equals level.LevelId
             select new ComplexViewModel()
                {
                    Name = name.Name,
                    Category = category.CategoryName,
                    Level = level.LevelName,
                };
return result.ToList();               

可以找到更多联接示例recommended to review.