This is for knowledge base only.
If you run your ASP.NET application from a Windows Server 2008 against SQL Server 2012, and make usage of Geography field, known as spatial data types, you would need to install the following:
Microsoft® System CLR Types for Microsoft® SQL Server® 2012
Microsoft® SQL Server® 2012 Shared Management Objects
There are two versions, a x86 and a x64. Those have to be installed in the respective order. It seems the x86 version would be based on the application. So, if you have compiled it in 32 bits, that would be it. If you have compiled it in 64 bits, it would be the x64 version.
But, this doesn't stop there.
If you run SQL Server 2012 in emulation mode for SQL Server 2008, none of the above would change anything. You would have to install the 2008 version.
And, then, as is, your Web site won't do much until your iisreset /restart. And, there it works. Then, as soon as the emulation goes off, you can uninstall the 2008 version of those two packages. And, whenever the application is compiled in 64 bits, I guess it is safe to say that the removal of the x86 package of the 2012 version can be done as well.
All this to avoid this "DataReader.GetFieldType(68) returned null." error.
I thought I would share it as there is a lot of documentation in regards to that, especially if you set up a big virtual environment. Then, you come back 6 months later, install one more Web server and wonder why this one is not working.