我有一个名为'dbSet'的动态对象,它在运行时创建,我认为它包含一个DbSet
dynamic dbSet = context.RegisterType(GenericPOCO);
我用以下代码创建DbSet对象
internal object RegisterType<T>(T genericPOCO) where T: class
{
var m = this.GetType().GetMethod("Set");
var generic = m.MakeGenericMethod(genericPOCO.GetType());
var result = generic.Invoke(this, null);
return result;
}
之后,我尝试在下一行创建一个可查询对象:
var item = await EntityFrameworkQueryableExtensions.FirstOrDefaultAsync(dbSet);
在最后一行中,我收到下一条消息
SQLException:无效的对象名称'TestGatito'
'TestGatito'是在运行时创建的动态对象的类型,该名称可以是变量,因此我无法在模型中注册该对象
答案 0 :(得分:0)
我终于可以解决问题了
我必须创建一个新上下文来注册新对象,新上下文与主上下文相同,因此在nex上下文中,我可以添加新实体并适当地反射以调用DbContext的所有方法,例如“ FirstOrDefault,Find,列表等'