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, чтобы определить, какое свойство используется в качестве внешнего ключа для свойства навигации? (Предполагая, что есть один)