If expression trees are usable on silverlight, linq is usable, but then again, who cares: it's on the client, in a browser. You can't access a local database, so the database is always on the server, and expression objects aren't serializable, so you need a serializable querying method. However, best practises for services dictate you use message based webservices, so the client is very thin, and calls methods on the service which do work, instead of using the service as a lowlevel tier (== chatty, burned down servers)
So we're looking at webservice usage of entities. Our entities are serializable to xml, the problem might be that the runtime lib is referencing assemblies which aren't supported by silverlight. That might be ok, the CLR loads assemblies on demand and if silverlight never touches code which calls into these assemblies, nothing to worry about.
The problem is with 'subset'. To keep the frameworks small, MS cuts down the mscorlib. This requires that any assembly compiled on normal .NET, needs to be recompiled against the smaller mscorlib. This is the case with the compact framework for example. And this is a true pain.
The biggest pain is in the cut-out overloads of methods and classes. For example a SortedList isn't available on the compact framework. StringBuilder.AppendFormat(string, ...) isn't supported, you need StringBuilder.AppendFormat(null, string, ...) as the overload AppendFormat(string, ...) is 'overkill' apparently.
This makes supporting code which runs fine on .NET on a stripped down platform like compact framework and silverlight a pain: developing new code always results in noncompiling code on these platforms, or worse: you write a piece of code and it's not portable to these platforms because an essential concept isn't there. This is the case with the DI code on compact framework: it's impossible to enumerate the assemblies in an appdomain on the compactframework, as it doesn't have the concept of an appdomain.
that's why we are reluctant to say "we'll support these platforms": it's a ton of work and not a lot of people use it. IF it's easy to port the code, e.g. no recompile or code rewriting for these platforms: no problem.
I can't find any exact information about what's missing in the silverlight 2 framework. The wikipedia article smells like marketing written up front. 'Linq is supported' yeah, what does that mean? If it's that vague, why is it mentioned in the wikipedia article.. So to find out I've to install the beta1 of the SDK. I'm not sure if that will break my 2008 box, so I won't do that on that box, the problem is that installing it on a virtual machine requires vs.net 2008 to be present on that virtual machine as well. And that's very slow to install on a virtual machine.
Isn't there any MSDN lib online about the framework details?
(edit) http://msdn2.microsoft.com/en-us/library/bb404716.aspx
It contains the reference of the .NET framework supported.
So looking at that list, it's clear this requires at least a custom build of the runtime lib. Perhaps we can re-use the nmake file of cf.net for the silverlight platform, not sure. It truly depends on how much necessary stuff they've cut out. Also the generated code has to be trimmed down, so similar to the compact framework.
Fun...
Edit: There's no System.Data ? Hmm... I'm not sure, but why don't they have System.Data?