Definitely don't use a singleton. If you are using an IoC container then you can set the context to be shortlived - one instance of the context per request. Or in your data access layer, wrap any datacontext instantiations with a using
statement to be sure that it is properly disposed of, i.e:
MyModel model;
using(var context = new LearningDBDataContext()){
// fetch your data here
model = ...
}
return model;
Check out this SO post and this MSDN site for more info on this subject.