0

In my MVC application I imported a stored procedure as a function import (in EDMX File)

The stored procedure changed (new parameter) but I don't know how to update it.

For now I just deleted and re-add it manually, but I would like to know what's the best way to achieve this.

UPDATE:

I found an option in the update model from database wizar, there is a refresh tab there, but when attempting to refresh, It does not create the new parameter

4

1 回答 1

0

首先,要了解您的问题,您需要知道的是EDMX文件只是一个包含 3 个不同部分的 XML 文件:

  • CSDL: 概念模式定义语言
  • SSDL: 存储模式定义语言
  • MSL: 映射规范语言

CSDL包含构成概念模型的实体和关系。描述了您的SSDL数据库模型,并且MSL是 2 之间的映射。

“从数据库更新模型”过程将更新SSDL(更改与当前数据库架构不一致的所有内容),它只会CSDL在您向数据库架构添加内容的情况下修改。

这是一种非常正常的行为,因为您的概念架构可能/应该与您的数据库架构不同(除非您希望您的域模型看起来完全像一个显然不像 OOP/DDD 最佳实践的数据库模型)。

函数导入机制的工作方式相同。一旦你导入一个新的存储过程,一个新的FunctionImport元素就会被添加到CSDL. 这个新元素将描述 SP,包括它的参数。正如我所说,如果您运行更新向导,只会在其中添加CSDL内容,这就是为什么如果您更改数据库中的任何 SP 参数,它不会在概念模型中更改。

要强制更改概念模型,请打开 EDMX,进入模型浏览器,展开函数导入条目:

  • 如果您希望刷新所有内容,只需删除该功能并再次导入即可
  • 如果要改变输入参数,展开右边的函数,去掉参数,更新函数
  • 如果只想更新返回类型,右键点击右边的函数,选择更新,点击更新
于 2013-07-09T08:47:10.947 回答