C# EF6中获取相关记录信息的通用方法

C# EF6中获取相关记录信息的通用方法,c#,sql-server,entity-framework-6,C#,Sql Server,Entity Framework 6,在我们的代码中,我们经常检查正在编辑/删除的实体是否有任何相关记录,并向用户显示警告/错误消息:例如,人员“a”在批次中有以下车辆:car1、car2、car3,无法删除 我们发现自己在写这种逻辑: var cars = dbContext.AsNoTracking.Cars.Where(c => c.Person.Id == person.Id).Select(c => c.Name).ToList(); 这对于具有许多不同关系的许多实体都会发生。我只是想知道,既然EF/DB已经

在我们的代码中,我们经常检查正在编辑/删除的实体是否有任何相关记录,并向用户显示警告/错误消息:例如,人员“a”在批次中有以下车辆:car1、car2、car3,无法删除

我们发现自己在写这种逻辑:

var cars = dbContext.AsNoTracking.Cars.Where(c => c.Person.Id == person.Id).Select(c => c.Name).ToList();

这对于具有许多不同关系的许多实体都会发生。我只是想知道,既然EF/DB已经有了一种检查关系信息的方法,那么是否有一种通用的方法来检查关系信息,这样我们就不必对每个实体重复这种方法。我希望能够将一个实体/类类型传递给一个函数,然后该函数对所有这些进行求值,并返回每个函数中的关系和特定实体的列表。我现在已经知道如何使用反射来检查关系信息,但不知道如何从数据库中获取每个实体。以前有人做过类似的事情吗?

这能回答你的问题吗?如果你想加载所有相关的实体,你就注定要失败。千万不要这样做,你会在某个时候下载整个数据库。当你使用EF时,你的
个人
实体是否有
ICollection
或类似的
汽车