我有一个图像表,一个用于Jobs,一个用于用户。当用户发布作业时,我想从表格Image中自动分配该用户的图像。我不想在Job表中保存User ImageID,因为当公司想要更新徽标/图像时,它应该仅使用表Image和UserID自动更新所有作业,而不是使用ImageID更新行工作表。
这是我试过的:
var listOfJobs = db.Jobs.AsEnumerable();
var ProfileImage = db.Images.Where(
p => listOfJobs.Any(l => p.UserID == l.ApplicationUsers.Id)).ToList();
return View(ProfileImage);
使用上面的代码,它会显示所有作业中Image表格中的所有图像。
我应该尝试加入?我有点不知道如何使用join,如果它适合这种情况,我就不知道。
非常感谢
答案 0 :(得分:2)
您可以执行以下操作
1-添加新类/表JobImage
如果您还没有,假设id类型为int
,此表将存储每个作业及其相应的图像
public class JobImage
{
public int JobID{get;set;}
public int ImageID{get;set;}
public Job {get;set;}
public Image{get;set;}
}
2-现在您的查询将变为如下:
var ProfileImage = (from a in db.ApplicationUsers
join ij in db.JobImages on a.JobID equals ij.JobID
join i in db.Images on ij.ImageID equals i.ImageID
where a.UserID == **YourUserID**
select i).SingleOrDefault()
return View(ProfileImage);
3-您可能会考虑的一些情况
JobImageID
和JobID
以及ImageID
外键,并且可以将IsActive
添加为位和CreatedOn
日期,以添加追踪历史希望这会对你有所帮助