2016-09-13 6 views
2

私のモデルでは、「ユーザー」には「プロジェクト」があります。エンティティフレームワーク - トップレベルオブジェクトを取得せずに子リストから選択

public class User 
{ 
    public int Id { get; set; } 
    public virtual List<Project> Projects { get; set; } 
} 

(とりわけ)。コード内で

、私はプロジェクトの一覧を取得したいよ:

var p = _context.User(x => x.Id == someUserId).Projects; 

これだけでなく、ユーザーオブジェクトを引っ張っているが、私は(その無駄な努力)にそれを望んでいません。

プロジェクトモデルを変更して、ユーザーとオブジェクトの関係を持たないようにすることはできますが、他のものとの関係が期待されるため、他のものが壊れてしまいます。

これを達成する最もよい方法は何ですか? Projectクラスで、UserIdとUserオブジェクト参照の両方を持つことはできますか?

+2

どのようにしておく必要があります。私は、あなたがProjectエンティティ関連Userを参照してFkのプロパティを持っているかもしれないと思います –

+1

プロジェクトのみ "UserIdとUserオブジェクト参照の両方を持つことはできますか?"さらに、これは一般的な方法です。 – Dennis

+1

http://www.entityframeworktutorial.net/code-first/foreignkey-dataannotations-attribute-in-code-first.aspxを見てください。それはあなたにいくつかの洞察を与えるかもしれません。 – flindeberg

答えて

3

あなたのお問い合わせはProjectsの代わりにUsersで始まりますか?だから、

var projects=_context.Projects.Where(p=>p.UserId==someUserId); 

、あなたのProject実体は `.select`と選択の使用についてのこれら二つの特性

public class Project 
{ 
    //other properties 


    //FYI, EF by a name convention will use this property as FK, 
    //but is a good practice specify explicitly which is the FK in a relationship 
    [ForeignKey("User")] 
    public int UserId{get;set;} 

    public virtual User User{get;set;} 
} 
+0

そうですね、基本的に私は両者を持っていることについて私の質問に答えています。うまくいけば、これはコードの最初とテーブルの作成に悩まされることはありません。 – Developmental

関連する問題