1

有时我必须显示两个实体之间的关系。问题是,您是否应该在一个查询中检索所有数据(使用连接语句)?

例如,我有实体UserPicture。图片由一个用户创建。如果我想显示图片名称列表,以及谁上传了某张图片。

两种方法:

1)使用实体框架关系,其中图片是一个实体,它有一个用户属性(创建它的用户)。用户也是一个实体。

foreach(var picture : context.Pictures.all){
  picture.name
  picture.user.name
}

2)将图片和用户组合成一个POCO对象并将其返回给控制器。控制器:

foreach(var pictureUser : dal.GetPictureUsers){
  pictureUser.PictureName
  pictureUser.UserName
}

GetPictureUsers()
{
  PictureUser pictureUserPoc = new PictureUsersql.Include("Picture").include("User").Select(sa=> new PictureUser {
                                                                              PictureName = sa.PictureName, 
                                                                              UserName = sa.UserName});
}

建议使用后者以提高性能。就我个人而言,我会以前一种方式编写它,因为您没有在数据访问层的视图逻辑(打印图片和用户关系)中结合您想要的内容。

我希望我已经清楚地说明了这个问题。谢谢!

4

1 回答 1

0
@foreach (var profile in Model)
{
  @Html.DisplayFor(model=>profile.PictureName);
  @Html.DisplayFor(model=>profile.User.Name);
}

模型代表图片;如果您强烈键入视图,则可以使用它。

于 2012-09-13T13:06:24.883 回答