EntityFramework-Reverse-POCO-Code-First-Generator icon indicating copy to clipboard operation
EntityFramework-Reverse-POCO-Code-First-Generator copied to clipboard

Merge duplicate multiple result sets

Open sjh37 opened this issue 8 years ago • 9 comments

If a stored procedure contains conditional statements, such as this:

IF(@someVar < @otherVar) BEGIN
   SELECT a,b,c WHERE blah
ELSE
   SELECT a,b,c WHERE blah OR blah
END

The result sets will be the same, even though two can be returned. Instead of including ResultSet1 and ResultSet2, these can be merged and instead use a single return model.

sjh37 avatar May 05 '16 10:05 sjh37

+1

youngcm2 avatar Aug 11 '16 20:08 youngcm2

Or it would be nice to specify in the tt to only return 1 result set for procs.

youngcm2 avatar Aug 11 '16 20:08 youngcm2

Any update on this?? Or, can be specified in tt to include only first one?

jvinkovic avatar Jul 11 '17 10:07 jvinkovic

+1

aplocher avatar Sep 28 '17 15:09 aplocher

I resolved it in a way that always first set is taken if specified in tt file. Will make a pull request in a month.

jvinkovic avatar Sep 28 '17 16:09 jvinkovic

Any updated workaround for this? The only thing I've found to work reliably is to just separate my stored procedure that contains IF/ELSE SELECTs into separate stored procedures that map to the same result set entity, but that's not ideal...

redmeadow avatar Apr 10 '18 17:04 redmeadow

I fully understand. It's actually SQL Server that tells me what will be returned, and where there are conditionals, for some reason it tells me there will be two or more result sets returned, even though in reality there could be only one.

As some results sets returned may be identical, they could in fact contain valid data. So what will happen is I will add an array to the settings you can edit so you can opt in certain stored procs to be merged if you know that is safe to do so.

Time scales - This is low priority, and will happen sometime after I have completed adding support for EF .Net Core version. Another biggie, is to add support for Oracle, MySql, Postgres, etc. However, I don't mind injecting quick wins into the generator, which this one would be. However, I've promised everyone that I'm concentrating on EF core support.

sjh37 avatar Apr 10 '18 18:04 sjh37

Understood, thanks for the quick reply. And I realize that you're just dealing with whatever SQL Server tells you about the stored procedure. It's unfortunate that SQL Server appears to be wrong in this case. The setting addition to merge result sets for specific stored procedures would be great. In the meantime, at least there are some other ways to workaround the issue.

redmeadow avatar Apr 10 '18 18:04 redmeadow

hello,

please find my temporary solute that I presented in Issue #265

CorsairRO avatar May 30 '18 16:05 CorsairRO

I have included a new setting flag which defaults to true. This will cause the generator to inspect multiple result sets to see if they are all identical. If they are all identical the duplicates will be removed leaving a single model.

Settings.MergeMultipleStoredProcModelsIfAllSame = true;

This will be in the next release.

sjh37 avatar Dec 18 '23 20:12 sjh37