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?
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();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With