J'ai une database complexe ("entreprise") qui a des centaines de tables, et un seul model EDMX contenant toutes les tables pertinentes, les procédures stockées vues, etc.
J'ai atteint la limite de ce que l'outil EDMX est capable de faire. Lorsque je "Mettre à jour le model de database", il échoue:
The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.
À l'aide du profileur SQL, je peux voir une requête exécutant sp_executesql
et passant tous les objects EDMX en tant que parameters, et il y a plus de 2100 parameters. Chaque entité a le nom de la database, le nom du schéma et le nom de la table, et apparaît deux fois dans la list. Ainsi, en travaillant à rebours, je peux voir qu'ayant> 350 tables avec des relations complexes empêche maintenant l'EDMX de mettre à jour.
Je ne peux pas décomposer l'edmx en contexts plus petits, car cela nécessiterait un redéveloppement substantiel de l'application, ce qui n'est pas le cas.
Je peux voir que toutes les entités ont des POCO générés, mais que les relations et autres informations de construction de model sont stockées dans l'EDMX et évaluées au moment de l'exécution.
Je ne peux pas être sûr que le model est purement "créé à partir de la database", ou si les développeurs précédents y ont ajouté manuellement (par exemple en ajoutant une relation entre deux tables qui n'ont peut-être pas de relation de key étrangère).
Ma question est, existe-t-il des outils qui extraient des informations de construction de model d'EDMX en constructors de templates de style code-premier (tels que les POCO générés par EDMX existants), ou "reverse engineering" un context EDMX existant pour coder- premier?
Alternativement, y a-t-il quelque chose que je puisse faire pour configurer le concepteur EDMX pour qu'il soit "plus intelligent" sur la façon dont il paramésortingse ses propres requêtes. Ayant @ p1 = N'dbo '… @ p4 = N'dbo' … @ p7 = N'dbo '…… @ 2097 = N'dbo' … `ne semble pas comme le utilisation la plus efficace des limites du paramètre 2100. Puis-je le configurer pour, disons, identifier que toutes les valeurs sont identiques et réutiliser @ p1?
Merci.