It looks like this is one of those "you can't obfuscate anonymous types" issues that can happen with LINQ to SQL. The list of all the types I know of that must be excluded are listed on the SDK Wiki. (The list may be incomplete)

The bits that can't be deobfuscated probably exist in another assembly that has been protected with SmartAssembly at obfuscation level 2 or higher (non-ASCII) because you can't use the stack decoder except with ASCII obfuscation.

I wish it was LINQ to SQL or at least LINQ at all, but its not. LINQ is not used at all.

The interesting thing I found out here is that in a release version without SA the exception is another one but its swallowed by the runtime.
The runtime tries to load an serialization assembly which doesn't exist but it continues without it (who has the guts to dive into such a thing?)

Yet, after protection it turns into something completely different which worries me a bit.