如何让Entity Framework更新复杂类型?

46

我正在使用Entity Framework(EF)从存储过程创建复杂类型。最近,存储过程发生了变化(增加了更多的返回值)。我想更新映射到该存储过程的复杂类型。这是否可能,如果可以,如何操作?当前,每当存储过程发生变化时,我都会删除我的函数导入和复杂类型,这很可能不是最佳方法。

2个回答

129

我发现还有一种不需要删除复杂类型的方法来完成这个操作。您可以更新您的复杂类型,Visual Studio将添加任何更改的列。以下是具体步骤:

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

这样就完成了!


9
太直觉了!我为什么没想到呢???给你的VS探索点击技巧加1分,Halcyon。非常感谢。 - Paul Prewett
2
不需要点击“获取列信息”,仅点击“更新”即可完成相同操作。 - SlimShaggy
确保你不处于调试模式。 - Mark Dornian
3
你如何逐个处理大量的函数导入?是否有一种方法可以一次性处理所有的函数导入? - Lali
4
Visual Studio没有自动处理这个实在是荒谬的。 - LarryBud
显示剩余5条评论

0

有一种更简单的方法来实现这个,看看这里在 Stack Overflow 上。它向存储过程添加了一些元信息,EF 会使用它来为您生成适当的返回类型。

存储过程的元信息部分不会执行,只是告诉了它返回哪些列和数据类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接