Reflection 通过导航从实体获取具有值的属性

Reflection 通过导航从实体获取具有值的属性,reflection,navigation,properties,entity,Reflection,Navigation,Properties,Entity,我有一个数据实体类,比如说Customers,它还包含一些其他导航属性,比如Orders,它包含OrdersDetails等等,在每个系统中可能有很多这样的属性 我知道我可以使用反射获得所有客户属性的列表,如果我想使用反射,我也可以使用它们,如下面的示例代码所示 MyData ctx = new MyData(); Dictionary<string, string> listap = new Dictionary<string, string>(); // first

我有一个数据实体类,比如说Customers,它还包含一些其他导航属性,比如Orders,它包含OrdersDetails等等,在每个系统中可能有很多这样的属性

我知道我可以使用反射获得所有客户属性的列表,如果我想使用反射,我也可以使用它们,如下面的示例代码所示

MyData ctx = new MyData();
Dictionary<string, string> listap = new Dictionary<string, string>();

// first part – getting properties

var type = typeof(Customers);
var members = from c in type.GetProperties()  select c;
        foreach (var item in members)
        {               
            listap.Add(item.Name.ToString(), item.PropertyType.Name.ToString());
        }

// second part – getting properties values

var item2 = (from c in ctx.Customers select c);
foreach (var item3 in item2)
   {

        foreach (var item in listap)
        {
            Console.WriteLine(item.Key + "  " + item.Value + "    " +
            (typeof(Customers).GetProperty(item.Key).GetValue(item3, null)).ToString());

        }          
    }
MyData ctx=newmydata();
Dictionary listap=新字典();
//第一部分-获取属性
var类型=类型(客户);
var members=在type.GetProperties()中从c中选择c;
foreach(成员中的变量项)
{               
添加(item.Name.ToString(),item.PropertyType.Name.ToString());
}
//第二部分-获取属性值
var item2=(来自ctx中的c。客户选择c);
foreach(项目2中的变量项目3)
{
foreach(listap中的var项)
{
Console.WriteLine(item.Key+“”+item.Value+“”+
(typeof(Customers).GetProperty(item.Key).GetValue(item3,null)).ToString());
}          
}
我想做的是:

  • 首先,您可以通过导航获取与客户连接的所有其他实体类的属性,即使它们离订单和订单详细信息只有几层之遥,并且可以将它们添加到listap dictionary中
  • 使用从第一点开始的属性列表,获取属性值,即使它们与客户的距离很小
我可以从第一部分得到关于订单的属性,但我不知道如何在第二部分中使用它们,以及如何更深入地了解订单细节