Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Entity framework finding foreign keys

I want to find all the foreign keys of an entity in my entity model.

I have used the following to get a list of all the properties for an entity:

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

Is there any way to find only those properties which have foreign key associations? And also that property in the reference entity with which it is associated?

like image 413
gunnerz Avatar asked Feb 21 '23 07:02

gunnerz


1 Answers

I worked out the solution:

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();
like image 153
gunnerz Avatar answered Mar 07 '23 04:03

gunnerz