c# - SqlException:对象名无效,对象在运行时创建
问题描述
我有一个在运行时创建的名为“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' 是在运行时创建的动态对象的类型,这个名称可以是可变的,所以我不能在模型中注册对象
解决方案
我终于可以解决问题了
我必须创建一个新上下文来注册新对象,新上下文与主上下文相同,所以在下一个上下文中我可以添加新实体并应用反射来调用 DbContext 的所有方法,如“FirstOrDefault、Find、List 等'
推荐阅读
- bash - 在某些目录末尾添加点的脚本
- jquery - 强制从链接下载pdf,但在iframe中嵌入pdf而不下载
- flutter - 颤振:断言失败:布尔表达式不能为空
- git - 永远使用同一个本地分支可以吗
- c++ - 当不存在 xvalue 时,移动语义如何应用于以下代码段?
- python - How to iterate through a list and print the key's in a specific order
- curl - 在 cURL 中进行重定向而不包含标头
- python - 如何从 python 中将目录添加到 Windows 10 PATH?
- php - 如何存储函数的结果,以便可以在函数外部调用值?
- java - Android FireStore RecyclerView onSwiped 方法不更新 RecyclerView