我正在使用 CoolStorage 作为 ORM,并且对查询数据库的频率有疑问。
我正在返回一个团队列表,并且还想显示每个团队中包含的用户数量。我正在通过调用返回团队,Team.List()
并且有 2 个选项我可以考虑如何返回用户数量。一种是向 Team 类添加一个属性,该属性返回其 [OneToMany] SysUsers 的计数,另一种是对Team.List()
. 下面的代码演示了这两种方法,它们都返回相同的结果。
我试图了解这如何影响数据库交互,例如它会首先返回一个团队列表,然后对每个团队运行一个单独的查询以获取用户数量吗?如果我想再添加 2 个或 3 个字段,它会为每个附加字段运行另一个单独的查询吗?这两种方法有什么区别吗?
我担心的是,如果连接不好,即使是简单的查询也可能没有响应。
CoolStorage 中存在运行即席 SQL 查询的选项,对于更复杂的查询,我是否最好这样做?还是我什么都不担心?
CSList<Team> teams = Team.List();
// Counting number of objects
var d = from t in teams
select new
{
TeamID = t.TeamID,
TeamName = t.TeamName,
NoUsers = t.SysuserTeams.Count
};
// Using property added to Team class
var e = from t in teams
select new
{
TeamID = t.TeamID,
TeamName = t.TeamName,
NoUsers = t.NumberOfUsers
};
DataGridView dgv = this.dgvTeams;
dgv.DataSource = d.ToList();
// Same result as
dgv.DataSource = e.ToList();