其他虚拟/导航属性

时间:2013-02-26 13:52:29

标签: entity-framework

我有以下型号:

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可以做到这一点吗?怎么样?

1 个答案:

答案 0 :(得分: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该属性未映射到数据库列(有关详细信息,请参阅this page)。

没有必要将其设为虚拟(除非您确切知道原因),因为EF不会覆盖它。此外,set访问者不应该存在,因为它实际上是一个计算属性。