实体框架-使用Fluent API配置获取相关项目而无需明确引用

时间:2018-08-19 16:10:58

标签: c# api entity-framework-6 fluent

假设我有一个带有可选属性X的数据库表A。 我有一个带有复合键(Y,X)的表B。这两个表没有任何明确的关联。

例如

create table A
(
    Id uniqueidentifier not null,
    X uniqueidentifier null
)

create table B
(
    Y uniqueidentifier not null,
    X uniqueidentifier not null,
    Constraint PK_B Primary Key (Y, X)
)

A和B通过属性X隐式关联,因为X是一个孤立ID(其基表已移出)

对于使用C#代码的模型A,如何使用属性X填充IList<B>,以获取B中包含X的所有项目?理想情况下,我想使用Fluent API配置。

例如

public class A {
    public Guid Id {get; set;}
    public Guid? X {get; set;}
    public IList<B> RelatedItems {get; set;}
}

public class B {
    public Guid X {get; set;}
    public Guid Y {get; set;}
}

如何使用Fluent API配置实体,以便可以使用类似的

var list = await context.AQuery()
.Include(a => a.RelatedItems)
.ToListAsync().ConfigureAwait(false);

或任何其他方式填充A中的IList

谢谢!

1 个答案:

答案 0 :(得分:0)

在我们的模型中,x是一个属性,一个属性具有一个getter,您可以设置x属性的get方法来从数据库中检索记录(类似于延迟加载设计模式)

public IList<SomeStuff> X {
get { // go get records from database }
}

这将使您额外花费,所以我不确定这是否是您想要的