我有以下型号:
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可以做到这一点吗?怎么样?
答案 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
访问者不应该存在,因为它实际上是一个计算属性。