我有一个实体,名为Task
。任务可以有孩子的任务。在我的dal中,我试图每次从我的实体模型中获取任务时自动评估子数。子数不存储在数据库中。定义动态实体属性/函数
例如,让我们来看看我的获取方法:
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);
}
}
但不是调用READDATA与2个PARAMS,我只是想用一个任务参数去调用它: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;
}
我不关注。什么是ReadData?你想在你的模型中加入DAL调用?你应该注入一个IRepository对象吗? –
ReadData获取参数(一个任务实体)并返回一个TaskDto - 一个数据合同对象。我不会在我的模型中打dal电话。上面的代码在TaskDal中,通过我的业务层的存储库调用,但这是无关紧要的。 – Kev
如果您的任务具有导航属性,那么您应该能够从传递的任务对象中进行查询。 – Jay