というエンティティがありTask
ます。タスクは子タスクを持つことができます。私のdalでは、エンティティモデルからタスクを取得するたびに子の数を自動的に評価しようとしています。子の数はデータベースに保存されません。
たとえば、私の Fetch メソッドを見てみましょう。
public TaskDto Fetch(Guid id)
{
using (var ctx = ObjectContextManager<MyDataContext>.GetManager("MyDataContext"))
{
var data = (from t in ctx.ObjectContext.Tasks
join tty in ctx.ObjectContext.TaskTypes on t.Id equals tty.Id
where t.EntityGuid == id
select new
{
Task = t,
ChildCount = TaskChildCount(t.EntityGuid)
}).FirstOrDefault();
if (data == null)
{
throw new RecordNotFoundException("Task");
}
return ReadData(data.Task, data.ChildCount);
}
}
しかし、2 つのパラメーターを使用して ReadData を呼び出す代わりに、Task パラメーターを使用して呼び出したいだけでReadData(data.Task)
、ChildCount が自動的に存在するようにします。これを Task エンティティに焼き付ける方法はありますか? これは非常に単純な関数です:
public int TaskChildCount(Guid currentTaskId)
{
var ret = 0;
using (var ctx = ObjectContextManager<MyDataContext>.GetManager("MyDataContext"))
{
ret = ctx.ObjectContext.Tasks.Count(x => x.ParentId != currentTaskId);
}
return ret;
}