我有一個實體框架代碼第一個DbContext與下列實體配置。在這個例子中,Bar類是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; }
}
現在我知道在內部,Entity Framework明白Foo和Bar之間的關係是由外鍵Bar.FooId定義的。我想要做的是以某種方式在運行時使用表達式來提取該關係。我想實現的是表現爲如下的方法:在我知道我可以只得到bar.FooId和做這個簡單的例子
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);
現在。重點是我正在編寫一個類,我相信上面指定的GetForeignKeyValue方法是用戶最乾淨的接口。
是否可以查詢DbContext配置以確定哪個屬性用作導航屬性的外鍵? (假設有一個)
有使用的ObjectContext的MetadataWorkspace,這是DbModelBuilder填充有什麼辦法。 – 2013-10-25 14:33:04