EF CodeFrist到现有的Db

时间:2018-01-03 12:25:48

标签: c# asp.net-mvc entity-framework model-view-controller

我想学习EF 6 CodeFirst到现有数据库(SQLServer)

当我尝试运行我的项目时出现此错误:

例外

  

System.ArgumentNullException:值不能为null。参数名称:   源

控制器

public ActionResult Index()
{
    var meetings = db.Meetings
        .OrderBy(e => e.StartDate)
        .Where(e => e.IsPublic)
        .Select(e => new MeetingViewModel()
            {
                MeetingId = e.MeetingId,
                MeetingName = e.MeetingName,
                MeetingTypeName = e.MeetingType.Name,
                LocationName = e.MeetingLocation.Name,
                StartDate = e.StartDate,
            });

    var upcomingMeetings = meetings.Where(e => e.StartDate > DateTime.Now);
    var passedMeetings = meetings.Where(e => e.StartDate <= DateTime.Now);
    return View(HomeIndex, new HomePageModel());
}

页面模型

public class HomePageModel
{
    public IEnumerable<MeetingViewModel> UpcommingMeetings { get; set; }
    public IEnumerable<MeetingViewModel> PassedMeetings { get; set; }
}

CSHTML

@model AquaEvent.Common.HomePageModel
<div class="row">
    @if (Model.UpcommingMeetings.Any())
    {
        @Html.DisplayFor(x => x.UpcommingMeetings)
    }
</div>

connectioString是EF AutoGenerator而不更改

1 个答案:

答案 0 :(得分:2)

您没有在模型中传递集合,UpcommingMeetings导致视图中出现空异常错误;

var upcomingMeetings = meetings.Where(e => e.StartDate > DateTime.Now);
var passedMeetings = meetings.Where(e => e.StartDate <= DateTime.Now);
return View(HomeIndex, new HomePageModel()
{
    UpcommingMeetings = upcomingMeetings,
    PassedMeetings = passedMeetings
});
相关问题