我正在使用具有存储库模式和工作对象单元的实体框架。
我有一个实体Request,其属性为“RequestId”,“OldRequestId”,可以使用requestRepository对象访问。
例如:requestRepostiory.GetAll(),requestRepository.GetFiltered(r => r.Requestid = 10)
答案 0 :(得分:0)
简单的方法就是这样:
public static IEnumerable<Data> GetRecursive(int id)
{
while (true)
{
var tmp = GetFiltered(x => x.Requestid == id);
yield return tmp;
if (tmp.OldRequestId.HasValue)
id = tmp.OldRequestId.Value;
else
yield break;
}
}
请注意,此代码将运行对数据库进行多次查询。性能不是最好的,但它可能适用于您的场景。