【问题标题】:Column added to view not getting picked up by Entity Framework?添加到视图的列没有被实体框架拾取?
【发布时间】:2018-04-17 04:15:29
【问题描述】:

我在MyDB 中向vwMyView 添加了一个新列MyColumnMyDB 有一个存储过程 MySproc,它在 select 语句中返回 vwMyView.*

当我执行MySproc 时,vwMyView.MyColumn 包含在结果集中。但是,当我重新创建我的 EF6 .edmx 数据模型时,MyColumn 不会反映在 EF vwMyView 对象或 MySproc_Result 中。

我需要使用什么特殊技巧,以便我的新列 MyColumn 反映在重新创建的 EF6 .edmx 中吗?这是您有时会遇到的怪癖吗?

【问题讨论】:

  • 我认为您需要通过右键单击来更新 *.edmx 文件
  • 我完全删除了 edmx 文件,然后重新创建了它
  • @user9393635 验证您的连接字符串。

标签: c# .net sql-server entity-framework


【解决方案1】:

有时会发生,尤其是当输出作为多态行为在运行时生成时(基于条件的不同结果集)

在 EF 中,对于结果集,您可能需要显式创建输出映射。无需删除整个 EDMX,只需选择映射 (MySproc_Result) 并更新结果集以包含新列。

你是在过程中创建视图然后返回它的值吗?

在视图中,检查是否有条件地添加列(例如,如果 type=Sales,则包括 4 列,如果 type=Mgmt,则包括 5 列)。在这种情况下,EF 将选择第一个匹配的案例。

最好的方法是更新映射并将新列设置为可为空,以防万一某些条件使其不可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多