C# DataLoadOptions未加载链接表

C# DataLoadOptions未加载链接表,c#,linq,asp.net-mvc-4,C#,Linq,Asp.net Mvc 4,我试图将数据从主表(用户)和链接表(POST)传递到视图中,但是,当我在视图中时,我无法访问任何链接表数据。我使用的是使用LINQ2SQL创建的模型,我使用LoadWith方法包含相关表中的数据 以下是ActionResult中的代码: BlogModelDataContext context = new BlogModelDataContext(); DataLoadOptions dlo = new DataLoadOptions(); dlo.LoadWith<UserModel&

我试图将数据从主表(用户)和链接表(POST)传递到视图中,但是,当我在视图中时,我无法访问任何链接表数据。我使用的是使用LINQ2SQL创建的模型,我使用LoadWith方法包含相关表中的数据

以下是ActionResult中的代码:

BlogModelDataContext context = new BlogModelDataContext();

DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<UserModel>(c => c.PostModels);
context.LoadOptions = dlo;

var users = from u in context.UserModels
                         where u.UserId == WebSecurity.CurrentUserId
                         select u;

return View(users);
BlogModelDataContext=newblogmodeldatacontext();
DataLoadOptions dlo=新的DataLoadOptions();
dlo.LoadWith(c=>c.PostModels);
context.LoadOptions=dlo;
var users=来自context.UserModels中的u
其中u.UserId==WebSecurity.CurrentUserId
选择u;
返回视图(用户);
以下是ActionResults视图中的代码:

@model IEnumerable<MvcBlog.Models.UserModel>

@{
    ViewBag.Title = "NewProfile";
 }

 <h2>NewProfile</h2>

 @foreach (var item in Model)
 {
     @item.JoinDate
     @item.Username

     @foreach (var post in item.PostModels)
     {
         @post.
     }
 }
@model IEnumerable
@{
ViewBag.Title=“NewProfile”;
}
新档案
@foreach(模型中的var项目)
{
@项目.日期
@item.Username
@foreach(项目中的var post.PostModels)
{
@邮局。
}
}
但是,当我尝试访问post表的字段时,不会显示任何内容,并且会收到以下警告:

错误2 foreach语句无法对类型为
“System.Data.Linq.EntitySet”因为 “System.Data.Linq.EntitySet”没有 包含“GetEnumerator”的公共定义


我想一旦我使用
LoadWith
我就应该能够访问Post表的属性。任何帮助都将不胜感激。

使用Linq时要小心,尤其是IEnumerable。当前select语句返回IEnumerable对象。这意味着linq语句在开始迭代IEnumerable对象(即在视图中)之前不会实际执行。通过添加.ToList()实际上将强制在该点计算该枚举

然后将用户模型列表及其后模型传递给视图

总之,将.ToList()添加到linq语句中

var users = (from u in context.UserModels
             where u.UserId == WebSecurity.CurrentUserId
             select u).ToList();

您好,David,我已经像您所说的那样添加了ToList(),但是,我无法从PostModels表访问属性。请确保在Linq中UserModels和PostModels之间确实存在引用。打开dbml文件并仔细检查引用。尝试从dbml中删除并重新添加。嗨,David,我检查了dmbl,发现UserModel和PostModel之间存在关系。为了以防万一,我已经删除了dbml并创建了一个新的dbml,但我仍然有这个问题。这个型号声明正确吗@模型IEnumerableYes,这不是问题所在。在“var users…”上设置一个断点,并在此时调试未加载后模型的原因。