C# 从EDMX文件获取实体的外键

C# 从EDMX文件获取实体的外键,c#,linq,C#,Linq,我尝试从edmx文件中获取实体的FKs集合。我找不到返回集合或仅返回bool属性以指示实体属性为FK的方法或属性。 我在MetadataProperties中搜索EntityContainer类,但什么也没找到。我在属性GetProperties中的类类型中搜索了相同的结果,但找不到指示FK的方法或属性。 如何从edmx文件中获取实体的FK或FK指示 对不起,我的英语不好 谢谢您可以使用反射和过滤屏幕上的属性来获取外键 您可能正在从旧的EF中查找ObjectSet,该EF允许您访问导航属性。你可

我尝试从edmx文件中获取实体的FKs集合。我找不到返回集合或仅返回bool属性以指示实体属性为FK的方法或属性。 我在MetadataProperties中搜索EntityContainer类,但什么也没找到。我在属性GetProperties中的类类型中搜索了相同的结果,但找不到指示FK的方法或属性。 如何从edmx文件中获取实体的FK或FK指示

对不起,我的英语不好


谢谢

您可以使用反射和过滤屏幕上的属性来获取外键


您可能正在从旧的EF中查找ObjectSet,该EF允许您访问导航属性。你可以这样得到你的手:

var objectContext = ((IObjectContextAdapter)db).ObjectContext;
var os = objectContext.CreateObjectSet<TEntity>();
var foreignKeyProperties = os.EntitySet.ElementType.NavigationProperties.Where(x => x.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.One);

db是DBContext,TEntity是您正在使用的实体类型

Hi,向我们展示模型,以及您所尝试的内容。您需要属性的值吗?模型有10000多条端点。我觉得把它贴在这儿不好。我不需要这个值,只需要一些属性是外键的指示。我在Associations集合、entity集合和typeofEntity.Properties类中搜索EntityContainer.BaseEntitySets。
var obj = new T();

var foreignKeyPropertyInfos = GetForeignKeyProps(typeof (T));
foreach (var foreignKeyPropertyInfo in foreignKeyPropertyInfos)
{
  var value = foreignKeyPropertyInfo.GetValue(obj)
}
var objectContext = ((IObjectContextAdapter)db).ObjectContext;
var os = objectContext.CreateObjectSet<TEntity>();
var foreignKeyProperties = os.EntitySet.ElementType.NavigationProperties.Where(x => x.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.One);