我正在构建一个门户网站来管理不同产品的过程设定点,每个过程Area都有许多表(结构相同,5 int,10 real)存储设定点(AreaXSetpointInfoY,Area Number X)和SetpoinIntfo表Y)和GeneralProductInfo表(在SQL中,所有这些都是由Entity Framework首先使用数据库链接的)。主要成就是获得一个视图来编辑GeneralInfo和指定的AreaXSetpointInfoY表。
我已经实现了以下视图,它使用了一个主视图和一个@HTML呈现的视图。现在只需要一个特定的表即可。
由于表和区域的数量将来可能会改变,我希望至少将它们放在组合框中,并且当选择另一个AreaXSPInfoY表时,重新呈现视图的表部分。
我已经或尝试过其他方法,
具有一个ViewModel,该ViewModel可以根据Area,SPInfo,ProductID等参数进行动态绑定。
其他方法是使用存储过程,该存储过程返回所选AreaXSPInfoY表的列并将其呈现在视图中。
或者使用原始查询从所需的AreaXSPInfoY表中获取列
这些尝试的问题是:
1.a我还没有找到一种将模型动态绑定到表的方法(我知道当需要添加更多AreaXSPInfoY表时,它们应该是 添加到EF模型中
2.a我已经构建了一个存储过程来实现此目的,但是当我尝试将其用作实体的功能时,它根本没有出现在实体定义中(我已经以Function Import的形式添加到了模型中,它返回复杂类型,等等。
Public Function ProductDetailAreaXSPIY(_parameters As AreaXSPInfoXParameters) As ActionResult
Dim model = _db.Database.GetAreaXSPInfoY(_parameters.AreaID, _parameters.SPInfoID, _parameters.ProductID)
ViewData("Message") = "Tabla: "
If model Is Nothing Then
Return HttpNotFound()
End If
Return View(model)
End Function
这绝对可以达到目的。
3.a由于无法使用存储过程,所以我想到了对数据库使用原始查询
Public Function ProductDetailAreaXSPIY(_parameters As AreaXSPInfoXParameters) As ActionResult
Dim _SQLquery As String = "SELECT * FROM dbo.Area" + _parameters.AreaID.ToString() + "SPInfo" + _parameters.SPInfoID.ToString() +
" WHERE dbo.Area" + _parameters.AreaID.ToString() + "SPInfo" + _parameters.SPInfoID.ToString() + ".ProductID = " + _parameters.ProductID.ToString()
Dim model = _db.Database.SqlQuery(_SQLquery)
ViewData("Message") = "Tabla: "
If model Is Nothing Then
Return HttpNotFound()
End If
Return View(model)
End Function
这里的问题是我需要指定返回查询的类型,但我不知道它是哪个或如何做。
现在上面显示的视图来自以下控制器ActionResult
' GET: SPInfo/ProductDetail/ProductID partial view for area X setpointinfo Y
Public Function ProductDetailAreaXSPIY(Optional ByVal id As Integer = 0) As ActionResult
ViewData("Message") = "Tabla: "
Dim model As Area1SetpointInfo1 = _db.Area1SetpointInfo1.Find(id)
If model Is Nothing Then
Return HttpNotFound()
End If
Return View(model)
End Function