将实体框架6上下文从EDMX迁移到代码优先

时间:2017-09-13 05:43:56

标签: c# sql-server entity-framework entity-framework-6 edmx

我有一个复杂的(" enterprise")数据库,有数百个表,还有一个包含所有相关表,视图存储过程等的EDMX模型。

我已经达到了EDMX工具能够做到的极限。当我"从数据库更新模型"时,它失败了:

The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.

使用SQL事件探查器,我可以看到运行sp_executesql的查询并将所有EDMX对象作为参数传递,并且有超过2100个参数。每个实体都有数据库名称,模式名称和表名称,并在列表中出现两次。因此,向后工作,我可以看到有> 350个具有复杂关系的表现在阻止了EDMX的更新。

我无法将edmx分解为更小的上下文,因为它需要对应用程序进行大量的重新开发,这不在范围内。

我可以看到所有实体都生成了POCO,但关系和其他模型构建信息存储在EDMX中并在运行时进行评估。

我无法确定该模型是纯粹的"是从数据库"创建的,还是以前的开发人员手动添加到它(例如,在两个表之间添加可能没有外键关系的关系) )。

我的问题是,是否有任何工具可以将模型构建信息从EDMX提取到代码优先模式构建器(这样我可以使用现有的EDMX生成的POCO),或者#34;反向工程"整个现有的EDMX上下文代码优先?

或者,我可以做些什么来配置EDMX设计师更聪明"关于它如何参数化它自己的查询。 @ p1 = N' dbo' ... @ p4 = N' dbo' ... @ p7 = N' dbo' ...... @ 2097 = N& #39; dbo' ...`似乎不是最有效地使用2100参数限制。我可以将其配置为,例如,识别所有值是否相同并重新使用@ p1?

感谢。

0 个答案:

没有答案