We have identified the issue and it has to do with a LINQ to Entities query behaving differently in .NET 4.5 and generaring different T-SQL then in .NET 4.0. Basically, some left joins are now replaced by inner joins.
Our options are to either spend some time trying to fudge the model and/or the query and test it on 4.0 and 4.5 in the hopes that it will generate the same T-SQL or convert this query in a stored proc. It also mean that we have to do regression testing on all our database code and test any future database code on both 4.0 and 4.5. Might be simpler to convert the queries into store procs.
I have a client (WinForms) / server (WCF) system runing on the .NET Framework 4.0. I understand that installing 4.5 does an in-place update, basically replacing 4.0 with 4.5 (along with some breaking changes) instead of doing a side-by-side installation. Two must read blog post on this topic: Rick Strahl and Michael K. Campbell.
Once 4.5 is installed on the client machine, our app behaves differently: no data is retrieved by the client and no errors are raised. Something I suspect that is related to one of the Task API bug fixes but I'm not sure yet and I'll have to dig more.
If the issue has to do with with a change in 4.5 and we fix the issue, my guess is that the system will not run correctly on 4.0 forcing our clients to upgrade to 4.5. But what about the clients workstations that are still on XP and servers on 2003? They can't install install 4.5. So what do we do?
- Keep the code as is and tell the clients that the system is incompatible with 4.5 and that they can't install it. So how will MS push 4.5? Thru Windows Update? Can you prevent an update to 4.5?
- Fix the issue(s) and tell the clients that the system is now incompatible with 4.0 and that they must install 4.5 and at the same time, upgrade their XP workstations and 2003 servers.
I feel like I'm back in DLL Hell.
I had an issue installing some Windows updates on one of my computers. There were 5 updates to be installed but evrything failed and rolled back when I tried to install them as a whole. After 3 strikes, I decided to install them one by one and surprisingly, everything installed correctly. Oh well.