我有一个名为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 自动在那里。有什么方法可以将它烘焙到我的任务实体中吗?这是一个非常简单的功能:
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;
}