Entity Framework Code First: Как определить свойство внешнего ключа, используемое для свойства навигации во время выполнения?

У меня есть Entity Framework Code First DbContext со следующими настроенными объектами. В этом примере класс Bar является потомком класса Foo.

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

    public virtual ICollection Bars { get; set; }
}

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

    public Guid FooId { get; set; }

    public virtual Foo Foo { get; set; }
}

Теперь я знаю, что внутри Entity Framework понимает, что отношения между Foo и Bar определяются внешним ключом Bar.FooId. Что я'Я хотел бы как-то извлечь это отношение во время выполнения, используя выражения. Я'Я хотел бы реализовать метод, который ведет себя следующим образом:

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

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

Теперь в этом упрощенном примере я знаю, что могу просто получить bar.FooId и все. Дело в том, что яЯ пишу класс, для которого я считаю, что метод GetForeignKeyValue, указанный выше, является самым чистым интерфейсом для пользователя.

Можно ли запросить конфигурацию DbContext, чтобы определить, какое свойство используется в качестве внешнего ключа для свойства навигации? (Предполагая, что есть один)

Ответы на вопрос(2)

Ваш ответ на вопрос