Thanks to Derek for providing me with unit tests and insight to a concurrency issue that Sterling was encountering. You can now concurrently save and load items - before it would throw exceptions in certain cases due to trying to read/write the same item.
This is fixed.
As I was fixing the issue I realized that there really wasn't a point to use IEnumerable vs. IQueryable any more on indexes and keys. I'm not deferring execution on the query on the Silverlight side and the Phone side needs a list to do complex LINQ to Object.
Therefore, I changed all of the query interfaces to return a straight list. This means it is consistent on Silverlight and the Phone. The list is a copy of the collection stored internally so you don't muck with the actual index Sterling maintains. Because
a list supports both IEnumerable and IQueryable, this should not break existing code but it does make the "ToList()" call I suggested on the phone redundant now (you'll just end up with two lists in memory).
This is the changest I am referring to:
There are now 77 tests that run green in both the browser and on the phone.