实体框架(数据库优先模型)是否可以忽略正在删除或重命名的未使用列



背景: EDMX是直接构建的,我只是选择了所有的表,并点击了"确定"按钮好几次,问题是,并不是所有的列都会被系统消耗。

发生了什么 后来,几个很好的列变成了"kiss good-bye"列,砰的一声,几个停止运行的组件作为异常从实体框架中抛出,上面写着"无效列名xxxxx">

想要实现的目标 希望stackoverflow的传奇大师们能善意地阐明"如何让EF忽略未使用的列,即使它们已经不在DB中了"。

系统设计有时需要一些空间。因此,所有候选列都可能在一段时间后不再使用,但DB First方法会考虑所有候选列,MS有可能想出某种策略来忽略未使用的属性,而且实现这种机制的复杂性和成本似乎不是很高。

在《追随》中,我尝试了一些事情,但没有成功,也许这是我尝试的方式,或者这不是扭转局面的方法。

方法#1在我这边尝试过

以更具体的列方式实现数据加载,表1.选择(第1、2、3、4列(;为什么我放弃了它:它太多了,我无法重写,所以我甚至没有验证它是否解决了问题。

方法#2在我这边试过

为什么我放弃它:它就是不起作用

方法#3

默认值=">

为什么我放弃了它:它就是不起作用,仍然有"无效列名"异常

#4

Database.Set初始化

为什么我放弃了它:它不起作用

如果数据库架构发生更改,则需要在Designer中更新EDMX模型。在空白处单击鼠标右键,然后单击"从数据库更新模型…"。每次架构更改时都需要执行此操作。

经过一段时间的研究,现在我有了一些变通方法,但我还没有任何解决方案。

  1. 将Data Contract注入EDMX调用中,以便EF只检索上层所需的列。优点:希望这是一次两鸟直接前进,使用数据合约和EDMX模式之间的映射器进行EF调用。缺点:Perf是一个令人担忧的问题,希望最新版本的反射不会占用太多的CPU跨度,而且实现必须大量才能覆盖所有EF调用。

  2. 设置单元测试用例

    步骤从DLL资源节检索当前使用的EDMX,从数据库检索最新的EDMX。如果实际值与预期值不匹配,请通知开发团队中的EDMX所有者。

    预期结果即时导出EDMX

    实际结果从DLL资源部分导出的现有EDMX

希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新