1

最初にEntity FrameworkコードでMVC4を使用しています。

私は次のモデルを持っています:

public class Member {

    public int ID { get; set; }

    [Display(Name = "First Name")]
    [Required(ErrorMessage = "Please enter a first name.")]
    public string FirstName { get; set; }

    [Display(Name = "Last Initial")]
    [Required(ErrorMessage = "Please enter the last initial of your last name.")]
    [MaxLength(1)]
    public string LastName { get; set; }

    [Display(Name = "City")]
    [Required(ErrorMessage = "Please enter your city.")]
    public string City { get; set; }

    public virtual ICollection<Favorite> Favorites { get; set; }
}

public class Favorite {
    public int ID { get; set; }
    public String Type { get; set; }
    public String Value { get; set; }
}

List<string> searchTerms私のコードはフロントエンドから検索語のリストを受け取っています。すべての検索用語について、すべてのメンバーのお気に入りの値を検索する必要があります。

次の LINQ ステートメントを使用しています。

return db.Favorites.Where(f => searchTerms.Any(s => f.Value.Contains(s))).ToList();

私の問題は、これは素晴らしいものを返すことList<Favorite>ですが、本当に必要なのはデータベースに関連付けられているメンバーの ID です。残念ながら、これはLINQで選択できるオプションではありません

return db.Favorites.Where(f => searchTerms.Any(s => f.Value.Contains(s))).Select(f => f.????) .ToList();

??? IDType、だけをくれますValue。のプロパティですがFavortie、エンティティ フレームワークが作成したデータベース テーブルには外部キー列がありますMember_ID。しかし、C# ではそれを選択できません。

私の質問は...どうすればいいですか?public virtual int MemberIDFavorite クラスにを追加するだけですか? エンティティ フレームワークは自動的にそれを外部キーに関連付けますか?

4

3 に答える 3

3

Code First の規則に基づいて、外部キーを追加するだけです。

public int MemberID { get; set; }

ナビゲーション プロパティが必要な場合は、

public virtual Member Member { get; set; }

詳細については、このMSDN ページを確認してください

于 2013-10-24T18:28:01.013 に答える
0

これは機能します:

   return db.Members.Select(member => new
    {
        Member = member,
        Favorites = member.Favorites.Where(f => searchTerms.Any(s => f.Value.Contains(s)))
     }).Where(m => m.Favorites.Any()).ToList();
于 2014-08-16T13:39:00.013 に答える