【发布时间】:2020-08-14 16:31:36
【问题描述】:
我正在尝试制作可重用的包含,当我有特定的具体根实体时,它目前可以工作。但是假设我有这样的结构:
public class A
{
public B NavigationB { get; set; }
}
public class B
{
public C NavigationC { get; set; }
}
public class C
{
}
还有我的包含扩展
public static class IncludeExtensions
{
public static IQueryable<B> MyIncludesB(this IQueryable<B> query)
{
return query.Include(q => q.NavigationC);
}
public static IQueryable<A> MyIncludesA(this IQueryable<A> query)
{
return query.Include(q => q.NavigationB)
.MyIncludesB(); // how can I implement this
}
}
如果我有单根,基本上一切都好。 A,但是如果我想使用 root B 进行提取呢?想法是包含B 所需的所有内容,但是当使用A 作为root 时,则包含A 的所有内容,当包含B 时,重用MyIncludesB。
我不确定这是否可行,因为 include 正在返回 IIncludableQueryable<A, B>,但如果有人有任何建议,请随时提供帮助!
【问题讨论】:
-
您必须将 'iqueryable' 转换为 'iqueryable' 才能使用扩展方法。 a 实现 b 吗?
-
不,它们没有任何共同点,只是一个导航属性。
-
您可以实现一个接口,其中包含它们共同的属性。并且该方法采用 'IQueryable
' -
我不确定您是否正确理解了这个问题,但它们没有任何共同点。我只想在另一个包含链中重用独立包含,因此我不必总是从
MyIncludesB复制粘贴所有包含在MyIncludesA内
标签: entity-framework-core navigation-properties