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



我在VS2013中首先使用EntityFramework 6和数据库。当你拉入数据库时,你可以得到存储过程,它为每个过程在你的上下文中构建方法,以及它从过程中派生的每个返回类型的类。

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

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

构建方法的名称和参数很容易——我可以用SQL Server元数据自己完成——然而,构建结果类会很麻烦,所以理想情况下,我想做VS正在做的任何事情。

有没有SDK命令或我可以从Visual Studio中提取的东西来按需执行此操作?我经常不得不重新调用我的proc(在开发过程的早期,所以事情不断变化),在UI中这样做很麻烦。

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

最新更新