Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.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
C# 实体框架中导航属性的属性之和_C#_Asp.net Mvc - Fatal编程技术网

C# 实体框架中导航属性的属性之和

C# 实体框架中导航属性的属性之和,c#,asp.net-mvc,C#,Asp.net Mvc,我想对网页上显示的一列数据进行汇总 我试着用 ViewBag.Total = bookingdb.Packages.Sum(x => x.PkgBasePrice); 这让我得到了数据库中所有数据的总和 我试过了 @Model.Sum(i => i.Package.PkgBasePrice) 以及我得到一个空异常错误的地方 我通过EF连接了3张桌子、预订套餐和客户 视图表单具有父表预订,因此如果我尝试添加任何内容 比如说别的 @Model.Sum(i => i.Travel

我想对网页上显示的一列数据进行汇总

我试着用

ViewBag.Total = bookingdb.Packages.Sum(x => x.PkgBasePrice);
这让我得到了数据库中所有数据的总和

我试过了

@Model.Sum(i => i.Package.PkgBasePrice)
以及我得到一个空异常错误的地方

我通过EF连接了3张桌子、预订套餐和客户

视图表单具有父表预订,因此如果我尝试添加任何内容 比如说别的

@Model.Sum(i => i.TravelerCount)
它是有效的,问题是当它像i.table.column那样出现错误时

我想对网页上显示的所有
PkgBasePrice
数据求和,因为这些数字是通过客户筛选的,并且是重复的,所以不能通过数据库求和

这是我的看法

@model IEnumerable<Online.Models.Booking>
@{
  ViewBag.Title = "Bookings";
}



@*<h1>Welcome @Session["CustomerId"].ToString()</h1>*@
<h1>Welcome @Session["Username"].ToString()</h1>

<p>
<h2> Your Bookings </h2>
</p>
<table class="table">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.BookingDate)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.BookingNo)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.TravelerCount)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Customer.CustFirstName)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Customer.CustLastName)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Package.PkgName)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.PkgBasePrice)
    </th>
    <th></th>
</tr>

   @foreach (var item in Model.Where(ModelItem => 
 ModelItem.CustomerId.Equals(Session["CustomerId"])))
 {
    <tr>
        @*<td>
                @Html.DisplayFor(modelItem => item.Customer.CustomerId)
            </td>*@
        <td>
            @Html.DisplayFor(modelItem => item.BookingDate)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.BookingNo)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.TravelerCount)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Customer.CustFirstName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Customer.CustLastName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Package.PkgName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Package.PkgBasePrice)
        </td>
        <td>
            @Html.ActionLink("Package Details", "Details", new { id = 
item.BookingId })
        </td>
    </tr>

}
</table>
@Model.Sum(i => i.Package.PkgBasePrice) //doesn't Work
<div> @ViewBag.Total </div>
<div>
@Html.ActionLink("Personal Information", "Customer", "Customer")
</div>
@model IEnumerable
@{
ViewBag.Title=“预订”;
}
@*欢迎@Session[“CustomerId”]。ToString()*@
欢迎@Session[“Username”]。ToString()

您的预订

@Html.DisplayNameFor(model=>model.BookingDate) @DisplayNameFor(model=>model.BookingNo) @DisplayNameFor(model=>model.TravelerCount) @DisplayNameFor(model=>model.Customer.CustFirstName) @DisplayNameFor(model=>model.Customer.CustLastName) @DisplayNameFor(model=>model.Package.PkgName) @DisplayNameFor(model=>model.PkgBasePrice) @foreach(模型中的变量项,其中(模型项=> ModelItem.CustomerId.Equals(会话[“CustomerId”])) { @* @DisplayFor(modelItem=>item.Customer.CustomerId) *@ @DisplayFor(modelItem=>item.BookingDate) @DisplayFor(modelItem=>item.BookingNo) @DisplayFor(modelItem=>item.TravelerCount) @DisplayFor(modelItem=>item.Customer.CustFirstName) @DisplayFor(modelItem=>item.Customer.CustLastName) @DisplayFor(modeleItem=>item.Package.PkgName) @DisplayFor(modelItem=>item.Package.PkgBasePrice) @ActionLink(“包详细信息”,“详细信息”,新{id= item.BookingId}) } @Model.Sum(i=>i.Package.PkgBasePrice)//不工作 @查看包。总计 @ActionLink(“个人信息”、“客户”、“客户”)
我想问的第一个问题是“您从哪里获取数据?您是否直接在视图中访问实体?”

如果是这样,我强烈反对这样做。您最好使用视图模型并在业务层中填充该视图模型。视图应该只绑定到视图模型并显示其值;你不应该以这种方式把逻辑混为一谈

第二个问题是“您是否正在添加附加导航属性的包含项”?空值有时可能是由于导航属性未包含在基础查询中造成的


从根本上说,我认为这里没有足够的信息来提供充分的帮助。我想问的第一个问题是“您从哪里获取数据?您是否直接在视图中访问实体?”

如果是这样,我强烈反对这样做。您最好使用视图模型并在业务层中填充该视图模型。视图应该只绑定到视图模型并显示其值;你不应该以这种方式把逻辑混为一谈

第二个问题是“您是否正在添加附加导航属性的包含项”?空值有时可能是由于导航属性未包含在基础查询中造成的


从根本上说,我认为这里没有足够的信息来完全帮助您

问题在于,当您在控制器方法中加载
预订列表
时,它没有为每个
预订加载相关的
。要为
预订列表中的每个
预订加载相关的
套餐
,您可以使用
Incldue
,如下所示:

var bookingList = bookingdb.Bookings.Include(b= > b.Package).ToList();
return View(bookingList);
此外,为了确保
预订
必须包含
套餐
,请按以下方式编写查询。否则,如果任何
预订
不包含
它将在
总和
期间引发空引用异常

@Model.Where(b => b.Package != null).Sum(i => i.Package.PkgBasePrice)

希望它现在能为您工作。

问题是当您在控制器方法中加载
预订列表时,它没有为每个
预订加载相关的
包。要为
预订列表中的每个
预订加载相关的
套餐
,您可以使用
Incldue
,如下所示:

var bookingList = bookingdb.Bookings.Include(b= > b.Package).ToList();
return View(bookingList);
此外,为了确保
预订
必须包含
套餐
,请按以下方式编写查询。否则,如果任何
预订
不包含
它将在
总和
期间引发空引用异常

@Model.Where(b => b.Package != null).Sum(i => i.Package.PkgBasePrice)

希望它现在能对您起作用。

谢谢Robert,我是mvc新手,我正在尝试创建视图模型方法,正如您所说,我从实体中提取数据。如果我的答案有用,请您投票给我好吗:-)我在这里太新了,所以我的投票没有什么不同:(对不起,罗伯特,我是mvc新手,我正在尝试创建视图模型方法,正如你所说的,我从实体中提取数据。如果我的答案有用,你能投票给我吗:-)我在这里太新了,所以我的投票没有什么不同:(对不起