在edmx文件中手动添加存储过程

是否可以在edmx文件中持久添加手动添加的存储过程? 数据库是从模型生成的。 每次我在edmx文件中的编辑器中更改某些内容时,存储过程都会丢失。 之后只有FunctionImport条目可用。

示例函数如下所示:

       

相应的FunctionImportMapping:

   

FunctionImport:

         

Moo,你不应该手动修改edmx文件。

“对此文件的更改可能会导致错误的行为,并且如果重新生成代码,则会丢失。”

这就是你失去工作的原因。 您应该从设计器映射已创建的存储过程,就像使用表格一样。

我假设你在玩EF4。

如果您执行Model First并且不想从数据库生成模型,则此解决方案有效。 (使用VS2013,EF6,MVC5)

打开您的EDMX文件。 右键单击并按数据库中的更新模型。 只检查“存储过程和function”并取消选中底部的两个框,“将选定的存储过程和function导入到实体模型中”(见下图)

更新模型向导

注意:如果您有数据注释等,它们将被重新生成和覆盖。

参考: 在entity framework模型第一种方法中使用存储过程(第一部分 – 添加新的存储过程)


进一步说明和细节:

“当实体数据模型向导从数据库生成.edmx文件时,它会在存储模型中为数据库中的每个存储过程创建条目。在创建函数导入时,相应的条目将添加到概念模型中。” 如何:导入存储过程(实体数据模型工具)

您似乎必须从数据库更新模型才能使用“添加新的>function导入..”向导来导入存储过程。 否则,它不会出现在列表中。 如果手动添加它们,则会冒被覆盖的风险。 每次编辑模型时都会发生这种情况。 每当您对模型或数据库进行更改时,您都必须使代码保持最新(我会保留备份副本)。

以下是通过从数据库生成模型来实现的: EF Model First with Stored Procedures

他们还引用了在MSDN社区支持论坛中从数据库更新模型的方法: 如何将新的存储过程添加到现有的.edmx文件中

这是我发现更新存储过程而不更新模型的唯一方法。