Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架:从模型生成数据库从模型存储中删除存储过程_Entity Framework - Fatal编程技术网

Entity framework 实体框架:从模型生成数据库从模型存储中删除存储过程

Entity framework 实体框架:从模型生成数据库从模型存储中删除存储过程,entity-framework,Entity Framework,我正在使用EF4模型的存储过程 为了实现这一点,我将执行以下步骤: 我通过从数据库更新并选择存储过程,将存储过程添加到模型存储中 添加了指向存储过程的函数导入 存储过程返回连接多个表等的查询结果,因此在“returns Collection of”区域中,我指定了一个复杂类型,并使用下面的Get Column Information按钮生成返回的复杂类型 这就是我的问题所在:当我使用“从模型生成数据库”选项时,它会从模型存储中删除存储过程映射。 我的问题是: 如何使用“从模型生成数据库”选项而忽

我正在使用EF4模型的存储过程

为了实现这一点,我将执行以下步骤:

  • 我通过从数据库更新并选择存储过程,将存储过程添加到模型存储中

  • 添加了指向存储过程的函数导入

  • 存储过程返回连接多个表等的查询结果,因此在“returns Collection of”区域中,我指定了一个复杂类型,并使用下面的Get Column Information按钮生成返回的复杂类型

  • 这就是我的问题所在:当我使用“从模型生成数据库”选项时,它会从模型存储中删除存储过程映射。

    我的问题是:

    如何使用“从模型生成数据库”选项而忽略存储过程映射?


    在模型属性中有一个“数据库生成工作流”,它是TablePerTypeStrategy,但显然这具有从模型存储中删除存储过程的附加效果

    这两种方法不应同时使用!先使用数据库(从数据库更新模型)或先使用模型(从模型生成数据库)。我甚至感到惊讶的是,它没有删除数据库中的存储过程


    选择“从模型生成数据库”时,它会从EDMX中删除整个存储描述和映射,并生成一个新的描述和映射

    我首先使用模型,但也将存储过程映射到函数导入。不幸的是,当我更新模型并尝试从模型生成数据库时,它会删除存储过程并取消映射函数导入


    为了解决这个问题,我在从EDMX上的模型生成数据库后进行了一次撤销(并保留更新的sql脚本)。这对我来说可以很好地更新数据库,并恢复存储过程和函数导入。

    您建议如何使用模型优先方法生成存储过程?@CodeGrue:我不建议使用模型优先方法创建存储过程。第一个模型适用于数据库转储且不包含任何逻辑的场景=无视图、无存储过程、无触发器、无sql函数,等等。可以创建这些对象,但您必须将它们硬编码到SQL生成模板-这是一个非常丑陋的黑客行为。为什么生成数据库没有从数据库中删除SP?它不涉及任何数据库,它会为您生成一个.sql文件。即使这样,文件中的sql也不包含任何会删除存储过程的内容。我非常不同意。Model First“从模型生成数据库”应支持edmx文件中定义的所有内容,包括视图,它也将这些视图转换为表,而不是保留为视图。它应该完全往返于数据库->模型->数据库关于它所支持的功能,即使不是所有的功能都支持。我尝试添加一个新的关联并这样做,但在撤消EF后,它声称它没有一个正确的关联映射。。。所以我不确定这是否总是有效的。