CoolStorageをORMとして使用していますが、データベースがクエリされる頻度について質問があります。
チームのリストを返します。また、各チームに含まれるユーザーの数を表示したいと思います。私は電話Team.List()
でチームを返還していますが、ユーザー数を返還する方法を考えることができる2つのオプションがあります。1つは、[OneToMany] SysUsersのカウントを返すプロパティをTeamクラスに追加することで、もう1つは、によって返された結果にLINQを使用することTeam.List()
です。以下のコードは両方のメソッドを示しており、どちらも同じ結果を返します。
これがデータベースの相互作用にどのように影響するかを理解しようとしています。たとえば、最初にチームのリストを返し、次に各チームに対して個別のクエリを実行してユーザー数を取得しますか?次に、さらに2つまたは3つのフィールドを追加したい場合、追加のフィールドごとに別の個別のクエリを実行しますか?2つのアプローチに違いはありますか?
私の懸念は、接続がうまくいかない場合、単純なクエリでさえ応答しなくなる可能性があることです。
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();