Wir wissen, dass wir für 1: n-Beziehungen keine Datenkonventionen verwenden müssen.EF-Code zuerst - Erkennen der 1: n-Beziehungen für den angegebenen Typ
Im folgenden Beispiel ICollection<Student> Students
ist eine Beziehung Eigenschaft
public class Student
{
public Student() { }
public int StudentId { get; set; }
public string StudentName { get; set; }
public virtual Standard Standard { get; set; }
}
public class Standard
{
public Standard()
{
Students = new List<Student>();
}
public int StandardId { get; set; }
public string Description { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
Also meine Frage ist, wie kann ich eine Beziehung propertys für einen bestimmten Typ erkennen? Mein Ziel ist es, den Wert der Immobilie zu testen und wie viele Elemente enthält
So etwas:
static void Test(object givenInstanse)
{
foreach (PropertyInfo p in TryGetOneToManyRelationshipsPropertys(typeof(givenInstanse), dc))
{
var val = (ICollection)p.GetValue(givenInstanse);
Console.WriteLine(val.Count);
}
}
static IEnumerable<PropertyInfo> TryGetOneToManyRelationshipsPropertys(Type t, DbContext dc)
{
// ...
}
Gemäß der Konvention kann der andere Typ keine Eigenschaft dieses Typs haben, ein anderer Typ kann nur eine ID-Eigenschaft haben. – codeDom
@codeDom Sie können der gleichen Logik folgen, um zu überprüfen, ob eine Eigenschaft mit dem Namen 'ClassName + Id' in beiden Typen vorhanden ist, wenn die erste Prüfung fehlgeschlagen ist. – user3185569
@codeDom überprüfen Sie die aktualisierte Antwort. – user3185569