My winforms app was going to speak Linq to SQL with an existing remote SQL server. Using Visual Studio C# 2010 Express, I assumed this was a piece of cake, and proceeded to add the server as a data source...
It turns out that Express doesn't think you will need to speak to actual servers, being a hobbyist/prototyping environment and all. This stackoverflow thread
sums it up nicely.
The solution? Screw the database explorer and use SqlMetal.exe
In my case:
sqlmetal.exe /server:myServer /database:myDatabase /user:myUser /password:myPassword /dbml:myContext.dbml /pluralize
This resulted in a nice and clean .dbml file which I could simply drop into the project folder, and then..
myContext context = new myContext(myConnectionString);
myThing thing = new myThing();