データアノテーションを使用して1対多のリレーションシップを構成する必要はないことがわかっています。次の例ICollection<Student> Students
でEFコード1番目 - 指定された型の1対多リレーションシッププロパティを検出
は、だから私の質問は、私は特定のタイプのために関係propertysを検出することができますどのように、ある
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; }
}
関係プロパティですか? 私の目標は、プロパティの値をテストすることであり、それはそのような
何かが含まれているどのように多くの項目:
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)
{
// ...
}
慣習によると、もう一方の型はこの型のプロパティを持つことができません。他の型はただidプロパティを持つことができます。 – codeDom
@codeDom最初のチェックに失敗した場合は、同じロジックに従って、クラス名+ Idのプロパティが両方の型に存在するかどうかを調べることができます。 – user3185569
@codeDom更新された回答を確認してください。 – user3185569