我有一个带有若干个DbSet<T>
属性的DbContext
:
public virtual DbSet<A> A { get; set; }
public virtual DbSet<B> B { get; set; }
public virtual DbSet<C> C { get; set; }
...
在某些情况下,我现在必须能够使用实体名称作为字符串来检索特定的DbSet(例如,当用户输入“A”时,我需要获取Dbset<A>
)。在以前的EF版本中,以下是可行的:
var dbset = Context.Set(Type.GetType(A));
在当前版本的EF Core中是否有类似的方法? 我已经尝试了几种方法来实现这一点,但目前唯一有效的方法是使用相当丑陋的开关/案例,我想摆脱它。我在这里找到了几篇与此类似的帖子,但它们都与早期的.NET Core版本或EF5 / EF6有关。
DbSet
类。问题是,您真的需要这样的方法吗?因为大多数DbSet<T>
方法都与非泛型版本(Attach
、Add
、Remove
、Update
、Find
等)一起从DbContext
公开,所以只使用实体类型的非泛型IQueryable
可能会有问题。 - Ivan Stoev