班级组如下:
class Group {
public string Name { get; set; }
public virtual ICollection<Person> Members { get; set; }
public dynamic AsJson() {
return new
{
groupId = this.GroupId,
name = this.Name,
membersCount = this.Members.Count // issue!
};
}
}
我有一个列出所有组的视图,如下所示:
Group name Members
Bleh 15
Zort 40
Narf 12
使用AJAX调用检索此列表,该调用返回JSON。该操作的代码如下:
groups = from g in (db.Groups where ... orderby g.Name).ToList()
select g.AsJson();
问题是这个列表花了太长时间(比如20秒)。
我改变了#34; this.Members.Count&#34;具有维护属性,即:
class Group {
public string Name { get; set; }
public virtual ICollection<Person> Members { get; set; }
public int MembersCount { get; set; } // added
public dynamic AsJson() {
return new
{
groupId = this.GroupId,
name = this.Name,
membersCount = this.MembersCount // changed
};
}
}
它开始工作正常(1-2秒生成列表)
有没有更好的方法来实现这一目标?我开始在维护属性MembersCount时遇到问题,因为在代码的几个部分中添加和删除了成员