我正在盯着Linq,无法弄清楚如何处理这个查询。
我有一个UserProfile表。 每个UserProfile都可以有许多图像(UserImages表)
我的模型(简化):
public class UserProfile
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Image> UsrImages { get; set; }
}
[Table("ImagesLocation")]
public class UserImages
{ //This is just an Id (and I don't even need it) It is not, from
public int Id { get; set; } what I can see, the UserProfile Id foreign key
public string ImgPath { get; set; }
public bool? ImgDefault { get; set; }
}
public class UserProfileDBContext : DbContext
{
public DbSet<UserProfile> UserProfiles { get; set; }
public DbSet<UserImages> userImages { get; set; }
}
我想要一个类似于:
的linq查询select * from dbo.imgLocation where userProfile_id = 1 (or any user id)
这将为某个用户带来包含所有“图像”(或图像数据/路径)的列表。 我看到EF在UserImages表上自动创建了一个名为userProfile_id的列,但我无法使用linq查询它,因为它不存在!
我一直在谷歌上搜索它,但我无法到达任何地方(添加我尝试的内容没有意义!... 最终,我可以改变我的模型来完成这项工作。我的主要问题是我在UserImages模型上找不到与UserProfile相关的密钥/外键
有关如何操作的任何提示? 谢谢!... 即插即用
答案 0 :(得分:1)
为了访问该列,您需要声明标量属性和匹配的导航属性,以便EF可以按照约定检测关系的两端。
[Table("ImagesLocation")]
public class UserImages
{
public int Id { get; set; }
public int UserProfileId { get; set; }
public virtual UserProfile UserProfile { get; set; }
public string ImgPath { get; set; }
public bool? ImgDefault { get; set; }
}
然后您可以通过
查询图像var images = db.userImages.Where(i => i.UserProfileId == 1);