实体框架查找外键

gun*_*erz 4 entity-framework

我想在我的实体模型中找到实体的所有外键.

我使用以下内容来获取实体的所有属性列表:

var workspace = _entities.MetadataWorkspace; 
var entityType = workspace.GetItems<EntityType>(DataSpace.CSpace).FirstOrDefault(e => e.Name == tablename);
var keyNames = entityType.Members.Select(k => k.Name);
Run Code Online (Sandbox Code Playgroud)

有没有办法只找到那些具有外键关联的属性?还有与之关联的参考实体中的属性?

gun*_*erz 7

我找到了解决方案:

var fk = _entities.MetadataWorkspace.GetItems<AssociationType>(DataSpace.CSpace).Where(a => a.IsForeignKey);
//check if the table has any foreign constraints for that column
var fkname = fk.Where(x => x.ReferentialConstraints[0].ToRole.Name == tablename).Where(x => x.ReferentialConstraints[0].ToProperties[0].Name == columnname);
//Get the corresponding reference entity column name
var refcol = fkname.Select(x => x.ReferentialConstraints[0].FromProperties[0].Name).First();
Run Code Online (Sandbox Code Playgroud)