SqlException:无效的对象名称,带有在运行时创建的对象

时间:2019-08-05 16:58:51

标签: c# ef-core-2.0

我有一个名为'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'是在运行时创建的动态对象的类型,该名称可以是变量,因此我无法在模型中注册该对象

1 个答案:

答案 0 :(得分:0)

我终于可以解决问题了

我必须创建一个新上下文来注册新对象,新上下文与主上下文相同,因此在nex上下文中,我可以添加新实体并适当地反射以调用DbContext的所有方法,例如“ FirstOrDefault,Find,列表等'