What's the best Data Access Layer strategy for Silverlight 2 and 3 apps?
Since you're running in a browser, you shouldn't be doing any DataAccess from the client side. The client typically calls a web service or wcf service, and that service has plenty of freedom in choosing how to do data access.
For every Silverlight application I've worked on that has needed data access, I've used Web Services (written in WCF). All of my business and data access logic are enforced in those services...leaving Silverlight to do what it does best, the interface!
You might also want to check out ADO.NET Data Services. From what I heard around MIX09, there should be some cool stuff coming out of there.
If you're using Silverlight 3 you could look into .NET RIA Services, which creates a DAL wrapper and provides easy access to the methods client side. The DAL itself, depending on how you define that term, can be EF, Linq2SQL, POCO etc.
If you are within the same domain and you are careful about security, you could use the ADO.NET entity data services. Here are some resources
http://msdn.microsoft.com/en-us/library/cc838234(VS.95).aspx