Предположим, это то, что у меня есть в моей базе данных
table Ancestor (
idAncestor int not null,
name varchar(20) not null,
)
table Descendant (
idDescendant int not null,
name varchar(20) not null,
Ancestor_idAncestor int not null
)
Когда ADO.NET генерирует объект сущности для указанных выше двух таблиц, я могу получить доступ с Descendant
из Ancestor
через Ancestors.First().Descendants
.
Если бы я должен был рекурсивно перебрать потомок (и) предка или потомка (потомков) потомка и распечатать его id
и name
, моя попытка будет следующей
public void Iterate(Ancestor a)
{
Type t = a.GetType();
PropertyInfo[] props = t.GetProperties();
foreach(var prop in props){
// pseudo code here
if(prop is entitycollection)
{
// how do I convert prop to entity collection here??
foreach(var p in prop){
Iterate(p)
}
} else {
print prop.GetValue(a, null)
}
}
}
Моя проблема заключается в попытке выяснить, относится ли свойство сущности к коллекции сущностей, если оно есть, найти тип, удерживаемый коллекцией, затем выполнить итерацию по типу и т. Д.
Спасибо