【问题标题】:ASP.Net Entity FrameworkASP.Net 实体框架
【发布时间】:2010-10-07 18:48:28
【问题描述】:

我只是在尝试 ASP.Net Entity 框架,这是我第一次尝试使用 ORM 框架,如果我说错了树,请耐心等待。

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

日历

日历ID 用户身份 日期 事件名称

用户

用户 ID 用户名

我已将它们添加到我的实体框架模型中,并建立了表之间的链接。然后,我可以使用类似的东西从我的 MVC 视图中显示日历列表

  • 但是,如果我再尝试使用

  • > :

    它在调用 calendarEntry.Users 时失败,因为它说它为空。为什么实体框架不通过使用细节?我需要在我的模型设计器中进行一些更改吗?

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

    var Entities = new UnityGamersEntities(); 返回视图(实体.日历);

    真的希望这是有道理的。

  • 【问题讨论】:

      标签: asp.net asp.net-mvc entity-framework


      【解决方案1】:

      您需要告诉实体框架为日历加载用户。

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

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

      也就是说,加载日历及其所有用户。

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

      【讨论】:

      • 您好,感谢您的建议,我一直在使用您发布的代码,它可以正常返回一条记录。但是,如果我将 FirstOfDefault 更改为 ToList,它只会说无法将匿名类型转换为 Generic.List。我会以错误的方式返回列表吗?再次感谢
      • 没错,因为您要返回一个包含许多对象的列表。试试这个: var data = (from c in Calendar where c.CalendarID.Equals(input) select new { c, c.Users } 并检查数据以查看数据结构的样子。
      【解决方案2】:

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

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

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

      希望这会在未来几个月内有所改变。

      【讨论】:

      • 是的,这让我非常恼火,我从 L2S 迁移到 EF,因为它更好地支持查找表,然后发现我失去了强类型,因为必须在其中声明所有子表字符串。
      【解决方案3】:

      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 - 我听说你缺少文档

      狡猾

      【讨论】:

        猜你喜欢
        • 2011-12-10
        • 1970-01-01
        • 2020-05-26
        • 2010-09-25
        • 1970-01-01
        • 1970-01-01
        • 2012-10-18
        • 2011-02-20
        • 1970-01-01
        相关资源
        最近更新 更多