【问题标题】:How Do I Get Entity Framework To Update Complex Types?如何让实体框架更新复杂类型?
【发布时间】:2011-05-12 18:09:25
【问题描述】:

我正在使用实体框架 (EF) 从存储过程创建复杂类型。最近,存储过程发生了变化(添加了更多返回值。我想更新映射到此存储过程的复杂类型。这可能吗?如果可以,如何?我目前正在删除我的函数导入和复杂类型,每次存储过程更改,这很可能不是最好的方法。

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

    我找到了另一种不删除复杂类型的方法。您可以更新您的复杂类型,Visual Studio 将添加任何更改的列。方法如下:

    1. 打开您的 .edmx 文件并转到模型浏览器。
    2. 如果您的存储过程发生更改,请右键单击模型浏览器中的任何白色区域并选择从数据库更新模型,然后单击“完成”。这将刷新您的存储过程。
    3. 现在深入到 XModel.edmx > XModel > EntityContainer:XEntities > Function Imports(X 是您的实体名称)并右键单击您需要更新的那个。选择编辑。
    4. 单击“获取列信息”。现在,在复杂类型单选按钮旁边,有一个更新按钮。按此更新您的复杂类型,然后按 OK 按钮。

    应该这样做!

    【讨论】:

    • 我在以下位置找到了“Function Imports”:“Foo.edmx/Foo/EntityContainer: FooEntities/Function Imports”
    • 如此直观!我怎么没想到?!?! +1 你的 VS 探索性点击技能,Halcyon。非常感谢。
    • 不需要点击“获取列信息”,单独点击“更新”也一样。
    • 大量函数导入怎么能一一进行呢?是否有任何方法可以一次为所有函数导入执行此操作?
    • 这很荒谬,VS 没有自动处理这个问题。
    【解决方案2】:

    有一种更简单的方法可以实现这一点,请查看 SO 的 here。它将一些元信息添加到存储过程,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
      相关资源
      最近更新 更多