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 回答