首页 文章

ASP.Net实体框架

提问于
浏览
0

我只是尝试ASP.Net Entity框架,这是我第一次尝试使用ORM框架所以请耐心等待我如果我正在咆哮错误的树 .

为了简化问题,我得到了以下2个表格

日历

CalendarID UserID日期EventName

用户

UserId用户名

我已将它们添加到我的Entity Framework模型中,并 Build 了表之间的链接 . 然后,我可以通过使用类似的东西从我的MVC视图中显示日历列表

  • <%= calendarEntry.DateAdded%>

但是,如果我然后尝试使用

  • <%= calendarEntry.Users.Username%>:<%= calendarEntry.DataAdded%>

它依赖于对calendarEntry.Users的调用,因为它表示它为null . 为什么实体框架没有通过使用细节?我是否需要在模型设计师中更改某些内容?

如果它有助于MVC控制器中将数据发送到视图的代码是这样的

var Entities = new UnityGamersEntities(); return View(Entities.Calendar);

真的希望有道理 .

3 回答

  • 0

    对于任何感兴趣的人我使用以下代码解决了这个问题

    UnityGamersEntities db2 = new UnityGamersEntities();
            ObjectQuery<GameCalendar> gc = db2.GameCalendar.Include("GameTitles");
    

    似乎真的缺乏实体框架的教程,除非你只想使用单个表我发现很难找到我需要的信息 .

    希望这将在未来几个月内改变 .

  • 1

    GAV,

    还有另一种方法可以让Linq to Entities填充用户表 .

    每个外键和集合都有一个“加载”方法,它将进入数据库,在您的情况下,获取链接到当前日历的用户列表并填充集合 . 这有点像延迟加载 .

    如果您要添加此行,它应该工作:

    <!-- Load up Users unless it's already Loaded -->
    <% if(!calendarEntry.Users.IsLoaded) calendarEntry.Users.Load(); %>
    
    <!-- Your Line -->
    <%= calendarEntry.Users.Username%> : <%= calendarEntry.DataAdded %>
    

    希望能帮助到你 .

    PS - 我听说你缺乏文件

    狡猾

  • 1

    您需要告诉实体框架加载日历的用户 .

    您可以通过LINQ查询执行此操作,只需:

    Calendar cal = (from c in Calendar
        where c.CalendarID.Equals(input)
        select new 
        {
            c,
            c.Users
        }).FirstOrDefault().c;
    

    这说,加载日历及其所有用户 .

    编辑:可能有其他方式加载用户,这只是LINQ方式 .

相关问题