从命令行生成EF存储过程方法

时间:2013-12-04 20:00:48

标签: c# visual-studio entity-framework visual-studio-2013 entity-framework-6

我在VS2013中使用EntityFramework 6,数据库优先。当您拉入数据库时​​,您可以获得存储过程,这些过程将方法构建到每个过程的上下文中,以及从过程派生的每个返回类型的类。

我正在寻找一种从命令行运行它的方法。我能找到的最接近的是EdmGen,但这显然只有表格。

我见过EfGen,但除此之外只是从没有源代码或同行评审的人那里下载,它似乎至少有一个版本。

构建方法的名称和参数很容易 - 我可以用SQL Server元数据自己做 - 但是,构建结果类会很诡异,所以理想情况下我想做VS正在做的事情。< / p>

是否有SDK命令或我可以从Visual Studio中提取的内容按需执行此操作?我经常不得不重新拉动我的过程(在开发过程的早期,所以事情不断变化),在UI中做这件事很麻烦。

1 个答案:

答案 0 :(得分:4)

我不认为你可以从命令行做什么。正如您在EF6 Designer中注意到的那样,没有用于逆向工程的公共API,类似于EdmGen公开的API。缺少API实际上并不是这里最大的问题 - 在EdmGen生成的一般模型和新设计者在语义上是相同的 - 唯一的区别是在EF6中为SqlServer引入了两个新的提供者清单标记 - 2012适用于Sql Server 2012和2012.Azure适用于Sql Azure。在使用新设计师定位上述数据库时,您将获得这些提供者清单令牌,但在使用EdmGen时,您将获得2008。这里的实际问题(以及EdmGen不支持生成/导入存储函数的原因)是在EF提供程序模型中,无法获取存储函数返回的结果的描述。为了弥补这一点,设计人员使用能够返回第一个结果集描述的DDEX提供程序(现在,您也知道为什么EF Designer不支持返回多个结果集的存储过程,即使它受支持由运行时)由商店函数返回。由于DDEX基本上是VS的东西,我认为你不能使用开箱即用的工具从命令行导入存储功能。