0

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

public class Useraccount
{
     public int Id { get; set; }
     public virtual ICollection<Task> Tasks { get; set; }
}

タスクコレクションは、タスクエンティティを介してエンティティフレームワークによって埋められます。これは問題なく機能しています。ここで、クラスが次のようになるように、追加の仮想プロパティが必要です。

public class Useraccount
{
     public int Id { get; set; }
     public virtual ICollection<Task> Tasks { get; set; }
     public virtual ICollection<Task> FinishedTasks { get; set; }
}

FinishedTasksプロパティはTasksと同じですが、終了したタスク(たとえば、statusId = 1)のみが含まれます。EFでそれを行うことは可能ですか?どのように?

4

1 に答える 1

1

次のようにプロパティを定義します。

public class Useraccount
{
    public int Id { get; set; }
    public virtual ICollection<Task> Tasks { get; set; }

    [NotMapped]
    public IEnumerable<Task> FinishedTasks
    {
        get
        {
            return Tasks.Where(t => t.Finished);
        }
    }
}

NotMapped属性は、このプロパティがデータベース列にマップされていないことをEFに通知します(詳細については、このページを参照してください)。

EFがオーバーライドしないため、仮想化する必要はありません(理由が正確にわからない場合)。また、setアクセサは実際には計算されたプロパティであるため、存在してはなりません。

于 2013-02-26T14:15:18.553 に答える