如何找到与导航属性相关的Id属性?

时间:2015-08-16 13:56:47

标签: c# reflection entity-framework-6

对于我正在使用Entity Framework的项目,我希望能够枚举给定对象实例的所有导航属性(假设它是由EF生成的对象)。从那里我想获得每个导航属性的相关Id属性。

例如,如果我获得了类Person的实例,我希望能够找到名为AddressBoss的导航属性。对于这两个导航属性,我想“查找”名为AddressIdBossId的相关Id属性。

我需要那些Id属性,所以我可以在不同的数据库上运行查询,这些数据库没有相同的外键但具有完全相同的ID。

到目前为止,我已经想出了一种方法来获取EF生成的随机对象实例的RelationshipManager。在调试时,我可以通过Manager的Relationships属性获取外键关系。但我只能获得导航属性名称。所以我可以看到FK_Person_Address与名为Address的导航属性相关但我找不到AddressId

所以我的问题是,如何动态(不了解Person类'布局)发现与AddressId相关的Address属性?

我知道外键关系可能在关系的另一端有{Id}属性(Boss指向Person,而不是PersonBossId )。在这种情况下,当我正在检查Boss的实例时,我仍然希望发现PersonId有一个Person

1 个答案:

答案 0 :(得分:0)

这是一个返回已知实体对象的键值的方法:

ObjectStateEntry

此方法使用基础EntityKey API获取属于每个实体对象的java -cp java-json.jar:. PlutoMake 个对象。 Get suggested invitees failed due to error code: 3 包含实体的键值作为键值对。 (具有复合键的实体具有多个键值。)