0

私は 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 に関連する外部キー

それを行う方法に関するヒントはありますか?ありがとう!... PnP

4

1 に答える 1

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);
于 2012-08-03T00:36:44.263 に答える