我在应用程序中使用 nhibernate,并且我有一个具有某些关系的映射模型。这些关系正在映射,List<T>
我需要将一个实体传递给一个方法并调用该Any()
方法来检查每个关系上是否有寄存器。
我尝试这样做,但是当我GetValue()
从 PropertyInfo 调用方法时,NHibernate 将加载所有内容,但我只需要调用Any()
方法来提高性能,并且 nhibernate 将查询一个简单的查询来检查。我试试这个:
var type = entity.GetType();
foreach (var propertyInfo in type.GetProperties().Where(p => typeof (IEnumerable<>).IsAssignableFrom(p.PropertyType)))
{
// it works, but load everything just to check if there are something...
var collection = propertyInfo.GetValue(entity) as IEnumerable<dynamic>;
if (collection != null)
bool has = collection.Any();
}
我想在这里调用 IEnumerable.Any(),但是如果没有 GetValue,我怎么能用反射来做到这一点?!