C# 如何使用实体框架在ASP.NETMVC3中包含子实体
好极了C# 如何使用实体框架在ASP.NETMVC3中包含子实体,c#,asp.net-mvc-3,entity-framework-4,C#,Asp.net Mvc 3,Entity Framework 4,好极了 有人能告诉我们如何包含子实体吗? 我有论坛项目。页面上,当我需要显示所有主题的帖子时,每个帖子都有帖子信息、用户信息,但是,当时我需要有用户组和用户角色的信息。(我无法附上图片(声誉低下),所以我尝试用文字描述表格) Post:id,Title,Text,UserId//Post.UserId=User.id 用户:id,Name,RoleId,GroupId//User.RoleId=RefRole.id和User.GroupId=RefGroup.id RefGroup:id,Nam
有人能告诉我们如何包含子实体吗? 我有论坛项目。页面上,当我需要显示所有主题的帖子时,每个帖子都有帖子信息、用户信息,但是,当时我需要有用户组和用户角色的信息。(我无法附上图片(声誉低下),所以我尝试用文字描述表格)
Post:id,Title,Text,UserId//Post.UserId=User.id
用户:id,Name,RoleId,GroupId//User.RoleId=RefRole.id和User.GroupId=RefGroup.id
RefGroup:id,Name
RefRole:id,Name
如果我只包括用户实体,我会这样做:
public ActionResult ViewTopic (int id)
{
ForumDBE forumDB = new ForumDBE();
var posts = forumDB.Post.Include("User").ToList();
return View(posts);
}
但我需要做什么,当我在var post时,我需要像这样查看RoleName(例如管理员、版主、用户)和组名(例如好用户、最佳用户、顾问…)
@model IEnumerable<MvcForum.Models.Post>
@foreach (var post in Model)
{
User Name: @post.User.Name
User Group: @post.User.RefGroup.Name
Uset Role: @post.User.RefRole.Name
}
@model IEnumerable
@foreach(模型中的var post)
{
用户名:@post.User.Name
用户组:@post.User.RefGroup.Name
使用角色:@post.User.RefRole.Name
}
在Entity Framework 4默认配置中,您不必使用包含
public ActionResult ViewTopic (int id)
{
ForumDBE forumDB = new ForumDBE();
var posts = forumDB.Post; // or you can use .ToList() but I prefer to use IQueryable
return View(posts);
}
然后
@model IQueryable
@foreach(模型中的var post)
{
用户名:@post.User.Name
用户组:@post.User.RefGroup.Name
使用角色:@post.User.RefRole.Name
}
它将使用延迟加载,因为您在Entity Framework 4默认配置中使用的是IQueryable
,而不是IEnumerable
,您不必使用Include
public ActionResult ViewTopic (int id)
{
ForumDBE forumDB = new ForumDBE();
var posts = forumDB.Post; // or you can use .ToList() but I prefer to use IQueryable
return View(posts);
}
然后
@model IQueryable
@foreach(模型中的var post)
{
用户名:@post.User.Name
用户组:@post.User.RefGroup.Name
使用角色:@post.User.RefRole.Name
}
它将使用延迟加载,因为您使用的是IQueryable
,而不是IEnumerable
您是否尝试过。包括(“用户”)。包括(“用户.参照组”)。包括(“用户.参照组”)。包括(“用户.参照组”)。从内存来看,这是可行的,但我不是100%,所以我将进行注释而不是回答。在LINQ to SQL中,一旦您获得了具有Users
table和RefGroups
table之间关系的模型,例如,它会自动在User
中定义一个名为RefGroups
的新属性。但在EF,我无能为力。我花了几天时间寻找答案。。。非常感谢!它起作用了var posts=forumDB.Post.Include(“User”).Include(“User.RefGroup”).Include(“User.RefRole”).ToList()代码>是否尝试过.Include(“用户”).Include(“User.RefGroup”).Include(“User.RefRole”)。从内存来看,这是可行的,但我不是100%,所以我将进行注释而不是回答。在LINQ to SQL中,一旦您获得了具有Users
table和RefGroups
table之间关系的模型,例如,它会自动在User
中定义一个名为RefGroups
的新属性。但在EF,我无能为力。我花了几天时间寻找答案。。。非常感谢!它起作用了var posts=forumDB.Post.Include(“User”).Include(“User.RefGroup”).Include(“User.RefRole”).ToList()代码>它工作var posts=forumDB.Post.ToList()代码>太。。。谢谢大家的帮助!!!谢谢它可以工作var posts=forumDB.Post.ToList()代码>太。。。谢谢大家的帮助!!!谢谢