有时我必须显示两个实体之间的关系。问题是,您是否应该在一个查询中检索所有数据(使用连接语句)?
例如,我有实体User和Picture。图片由一个用户创建。如果我想显示图片名称列表,以及谁上传了某张图片。
两种方法:
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});
}
建议使用后者以提高性能。就我个人而言,我会以前一种方式编写它,因为您没有在数据访问层的视图逻辑(打印图片和用户关系)中结合您想要的内容。
我希望我已经清楚地说明了这个问题。谢谢!