我有两个继承自dbcontext
的类public class AContext : DbContext
{
DbSet<A> A { get; set; }
}
public class BContext : DbContext
{
DbSet<B> B { get; set; }
DbSet<C> C { get; set; }
}
我如何通过typeOf(A / B / C)或typeOf(DbSet'&lt;'A / B / C'&gt;')获得指定的上下文? 的
答案 0 :(得分:0)
简短的回答:一般来说,你不能拥有ABContext
和一个BCContext
- 你想从类型中找到哪一个? B
?
如果您将自己局限于多种上下文类型永远不会处理相同类型的情况(或者至少,对于您将用作搜索输入的任何类型都是如此),您可以获得所有类型程序集,过滤掉那些继承DbContext
且具有正确类型属性的程序集,并选择匹配的那个。
typeof(ABContext).GetTypeInfo().Assembly.Types
.Select(t => t.GetTypeInfo())
.Where(t => typeof(DbContext).IsAssignableFrom(t))
.Where(t => t.Properties.Any(p => p.Type == yourDbSetType))
.Single();
(在我的手机上输入,很可能有一些拼写错误或不正确的BCL功能调用。我会仔细查看我在电脑上的时间......)
但是你希望通过这个来完成什么?将所有数据库集合放在一个上下文中是不是更好,以避免这种需要?