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...
Files? Really?
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();
context.Things.InsertOnSubmit(thing);
context.SubmitChanges();
Win.