如何从另一个表中获取数据

时间:2011-06-20 07:46:55

标签: asp.net-mvc-3

我正在asp.net mvc3中设计一个项目,我在sql server中设计了我的数据库,添加我使用的是ado.net。

这是我的控制器动作

    public ViewResult ProductFormulationIndex()
    {

        return View(db.ProductFormulation.ToList());
    }

表示我想显示ProductFormulation表的所有字段。 这是我的表: - enter image description here

这是我的productCategory表 enter image description here

在我的ProductFormulationIndex.cshtml中,我想显示ProductCategory Table的代码,而不仅仅是id。那么我应该在控制器或模型中做些什么呢? 您可能会建议与之相关的教程。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

您需要一个专为视图设计的视图模型。

在定义视图模型时,不应该考虑表格。 SQL表在视图中绝对没有意义。根据您需要显示哪些信息并相应地定义视图模型 因此,您可以定义视图模型,如:

public class ProductInformation
{
...
public string CategoryCode {get; set;}
...
}  

public Category ProductCategory 您可以使用AutoMapper在实际模型和已定义的视图模型之间进行转换。

您可以在http://weblogs.asp.net/shijuvarghese/archive/2010/02/01/view-model-pattern-and-automapper-in-asp-net-mvc-applications.aspx

找到一个好的教程

答案 1 :(得分:0)

虽然我可能不会回答你的问题,但 正在触及一些有趣的观点。

我订阅了一个思想学派,说不应该查询对象模型,而是使用非规范化的轻微查询图层。

您可能会很快遇到延迟加载和投影问题:即您总是不需要相关数据,而总是需要所有字段。查询层可以很好地处理这个问题,因为使用非规范化模型意味着当您执行查询时,不需要进行N个连接来获取相关数据。您仍然需要收集数据,但实际查看查询的速度会快得多。

此外,获取非规范化模型的所有数据(通过加入)是一次性事件,而不是每次在前端显示相关数据时都这样做。

希望有道理:)