fyj*_*ham 8 c# entity-framework-4
有谁知道如何从edmx生成的实体框架中获取架构信息?
具体来说,我要设法穿越了,我目前没有实例的实体的外键,并获得它的外键关系,我想通过反射在会一般适用于任何一种方式来做到这一点每次都没有自定义代码的实体类.
EG:我的架构有2个类,User和Group.我有数字"42",我知道,从"用户"实体"的GroupId"属性来了,但此刻我不能工作,如何检测到的"用户"外键本"的GroupId"属性"Group"实体由它的"GroupId"属性组成.
Ash*_*lam 23
您可以使用以下方法 -
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
foreach (var entityMember in entity.NavigationProperties)
foreach (System.Data.Metadata.Edm.EdmProperty foreignKey in entityMember.GetDependentProperties())
{
//... use foreignKey
}
Run Code Online (Sandbox Code Playgroud)
结束了找到解决方案.相关信息可以在上下文的RelationshipManager属性中找到.通过调用GetAllRelatedEnds()然后找到类型的那些AssociationSet.
的ElementType关联设置,那么的包含一个IsForeignKey属性,并且还阵列ReferentialConstraints,其具有的属性为每个约束ToRole,ToProperty,FromRole和FromProperty分别与RelationshipMultiplicity上ToRole/ FromRole可以被用来确定所述外键关系的方向.
获取所有这些数据并使用上下文的GetObjectByKey方法,我能够以编程方式遍历为上下文定义的外键关系,而无需关联实体.