I introduced Entity Framework (Code first) to my team in the beginning of this week. The other devs have not used it before, but as they are a Microsoft focused shop it was the only option other than ADO.NET. EF is a great tool but yet again I’ve got an example of how it blinds developers. It’s not just a Entity Framework problem, but frameworks in general.
The thing is that we have tables which represents our entities. Some of the tables are loosely coupled, but the EF Power Tools interpreted the relations as strong (thus interpreting some tables as junction tables). Most of the problems was sorted quickly by the dev. But one problem remained. And that was that cascading deletes did not work.
Instead of writing the delete queries manually the dev spent a day or two to fix the problem. I’m quite certain that a vanilla ADO.NET solution would have taken at most 30 minutes. What I’m saying is that ORMs works for most cases but not all. Unfortunately they blind developers. ORMs are so easy to use for the more common cases that the devs doesn’t seem to see that they waste hours on something that could have taken minutes with an alternative solution.
Use the right tool for the job.
I’ve followed the development of bitcoins for a while and I’ve from the start avoided to get involved (i.e. using bitcoins). I don’t think that there is anything wrong with bitcoin in itself. It’s a real awesome innovation. However, I don’t think that bitcoin will ever work in the real world. Here is why.
As you might know I’m running a .NET exception service called OneTrueError. When I moved from a NoSQL db to SQL Azure I had to be able to work with the database in some way. I’m not using OR/Ms any more. They might significantly reduce the bootstrapping, but in the long run they always tend to make you struggle as the application grow. To me, ORMs is a bit like ASP.NET WebForms, but for data. i.e. it tries to make something what it isn’t. I therefore wanted something that did not take away the control from me nor hide the underlying layer. I still want to work with my domain entities though.
Azure and PHP 5.5 didn’t seem to get along very much.
Got a lot of this in the log suddenly (without any modifications):
[07-Feb-2014 05:15:00 America/Los_Angeles] PHP Warning: PHP Startup: Unable to load dynamic library 'D:\Program Files (x86)\PHP\v5.5\ext\php_sqlsrv.dll' - The specified module could not be found.
in Unknown on line 0
[07-Feb-2014 05:15:00 America/Los_Angeles] PHP Warning: PHP Startup: Unable to load dynamic library 'D:\Program Files (x86)\PHP\v5.5\ext\php_pdo_sqlsrv.dll' - The specified module could not be found.
in Unknown on line 0
I’ve reverted to PHP 5.4 in the Azure Management web. All seems to work OK. Thumbs crossed.
OneTrueError is a new startup which also is a member of Microsoft BizSpark. This post is about the client library for WinForms/WPF. It will catch and handle all uncaught exceptions automatically. The errors are also uploaded to our site for analysis to enable us to suggest possible solutions
OneTrueError has a complete WCF integration following the same pattern as WCF. It makes it a breeze to capture and analyze errors in WCF applications.
OneTrueError is my new startup which also is a member of Microsoft BizSpark. This post is about the client library for ASP.NET (WebForms/MVC/WebAPI). It will catch and handle all uncaught exceptions automatically. The exceptions are also uploaded to our site for analysis to enable us to suggest possible solutions
OneTrueError has gotten some bug fixes. A windows update of .NET framework gave us a bit of a down time. Won’t happen again. Fortunately the client library always continue to try to deliver reports if something fails. So nothing should be lost even if the report site is temporarily down.
This article demonstrates how you can create a Unit Of Work implementation for ADO.NET
I had a minor down time due to a failing WordPress plugin update. I had to manually delete the failing plugins using the FTP account which is hidden inside the publish profile XML which you can download. Now I manually have to reinstall those plugins.