Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 即使架构不是最新的,EntityFramework也可以执行查询吗_C#_Entity Framework_Entity Framework 6_Ef Database First - Fatal编程技术网

C# 即使架构不是最新的,EntityFramework也可以执行查询吗

C# 即使架构不是最新的,EntityFramework也可以执行查询吗,c#,entity-framework,entity-framework-6,ef-database-first,C#,Entity Framework,Entity Framework 6,Ef Database First,出于某些原因,我需要连接到一个旧数据库(旧模式),该数据库具有一个EntityFramework6上下文(数据库优先方法),该上下文是新模式的最新版本 可以告诉EntityFramework:执行查询吗?即使您对它有不好的感觉,如果真的不可能,我也准备承担后果?我无法预测模式的哪一部分会有所不同,所以我需要一个通用的解决方案 我知道我暴露于意外的行为、异常等。基本上,我的架构更改是新列和/或缺少的列,因此(在大多数情况下)可以通过将映射属性设置为default(tenty)来修复缺少的/新列 当

出于某些原因,我需要连接到一个旧数据库(旧模式),该数据库具有一个EntityFramework6上下文(数据库优先方法),该上下文是新模式的最新版本

可以告诉EntityFramework:执行查询吗?即使您对它有不好的感觉,如果真的不可能,我也准备承担后果?我无法预测模式的哪一部分会有所不同,所以我需要一个通用的解决方案

我知道我暴露于意外的行为、异常等。基本上,我的架构更改是新列和/或缺少的列,因此(在大多数情况下)可以通过将映射属性设置为
default(tenty)
来修复缺少的/新列

当然,我不能更新我的旧数据库模式:D

编辑

详尽地说,我的数据库是一个
SQLite
数据库,下面是我在查询具有新列的表时遇到的异常:

查询:

this.DbSet.FirstOrDefault();
例外情况:

SQL逻辑错误或缺少数据库

没有这样的列:Extent1.SalesManager


编写查询时不要通过.select()选择整个字段集,也不要将
[NotMapped]
添加到这些属性中。我不知道在运行时哪些列将丢失或新增。我会在问题中加入这一点。因此,您的建议是不可能的。EF不是为此而设计的。我想你可以做一些复杂的思考。取决于您试图完成的任务。我的建议是使用LinqPad之类的工具来运行查询,当您遇到错误时,修改查询以解决该错误。例如,如果某列不存在,请从查询中删除该列,然后重试。是否可以在运行时执行此操作?我可以看到有NuGet软件包,但在LinqPad网站上,我看不到任何运行时API。。。