Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 从数据库模型填充ViewModel_Asp.net Mvc_Vb.net - Fatal编程技术网

Asp.net mvc 从数据库模型填充ViewModel

Asp.net mvc 从数据库模型填充ViewModel,asp.net-mvc,vb.net,Asp.net Mvc,Vb.net,我有一个继承数据库模型的ViewModel。我无法确定如何从数据库填充ViewModel “视图模型” “控制器” 我得到一个无效的强制转换异常 任何帮助都将不胜感激。您的Linq查询将返回(我假设)作为客户对象的列表,您需要将其投影到视图模型对象中。通过添加选择更改Linq: model = (From c In db.Customers _ Where c.Id = Id AndAlso _ c.OrganisationId = s.Organisatio

我有一个继承数据库模型的ViewModel。我无法确定如何从数据库填充ViewModel

“视图模型”

“控制器”

我得到一个无效的强制转换异常


任何帮助都将不胜感激。

您的Linq查询将返回(我假设)作为
客户
对象的列表,您需要将其投影到视图模型对象中。通过添加
选择
更改Linq:

model = (From c In db.Customers _
         Where c.Id = Id AndAlso _
         c.OrganisationId = s.OrganisationId _
         Select New CustomerView With { _
             .CompanyName = c.CompanyName, _
             .Address = c.Address, _
             .City = cust.City, _
             .Country = cust.Country}).FirstOrDefault

我已经有一段时间没有使用VB了,但这应该可以工作,或者只需要调整一下。

谢谢David。这和我的结局几乎一样。然而,我决定放弃继承权,为客户购买一处房产。这样,如果客户型号发生变化,我就不必更新控制器。我可以简单地将这个属性设置为我的linq查询。啊,很有趣。我个人会创建一个完全不同的视图模型类,并使用Automapper传递相关属性。除非受到控制,否则传递实体对象可能会变得危险。
Function Edit(Optional Id As Integer = Nothing) As ActionResult

    Dim model As New CustomerView

    model = (From c In db.Customers Where c.Id = Id AndAlso c.OrganisationId = s.OrganisationId).FirstOrDefault

    If model Is Nothing Then
        Return RedirectToAction("List")
    Else
        Return View(model)
    End If

End Function
model = (From c In db.Customers _
         Where c.Id = Id AndAlso _
         c.OrganisationId = s.OrganisationId _
         Select New CustomerView With { _
             .CompanyName = c.CompanyName, _
             .Address = c.Address, _
             .City = cust.City, _
             .Country = cust.Country}).FirstOrDefault