Entity Framework Code First: Wie kann ich zur Laufzeit die für eine Navigationseigenschaft verwendete Fremdschlüsseleigenschaft ermitteln?

Ich habe einen Entity Framework Code First DbContext mit den folgenden Entitäten konfiguriert. In diesem Beispiel ist class Bar ein Kind der Klasse Foo.

public class Foo
{
    public Guid Id { get; set; }

    public virtual ICollection<Bar> Bars { get; set; }
}

public class Bar
{
    public Guid Id { get; set; }

    public Guid FooId { get; set; }

    public virtual Foo Foo { get; set; }
}

Jetzt weiß ich, dass Entity Framework intern versteht, dass die Beziehung zwischen Foo und Bar durch den Fremdschlüssel Bar.FooId definiert wird. Ich möchte diese Beziehung zur Laufzeit mit Ausdrücken extrahieren. Ich möchte eine Methode implementieren, die sich wie folgt verhält:

var context = new FooBarDbContext();
var bar = context.Set<Bar>().First();

// I want this method to return bar.FooId when passed the expression b => b.Foo
object result = MyService.GetForeignKeyValue(bar, b => b.Foo); 

In diesem vereinfachenden Beispiel weiß ich, dass ich einfach bar.FooId bekommen und fertig sein könnte. Der Punkt ist, dass ich eine Klasse schreibe, für die ich glaube, dass die oben angegebene GetForeignKeyValue-Methode die sauberste Schnittstelle für einen Benutzer ist.

Ist es möglich, die DbContext-Konfiguration abzufragen, um festzustellen, welche Eigenschaft als Fremdschlüssel für eine Navigationseigenschaft verwendet wird? (Vorausgesetzt, es gibt eine)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage