Consider the following simple User table

I want to write Linq To SQL Code that returns a user by some predicate, e.g. the email address, or creates the user if he does not yet exists. The code might look like
User GetUser(String name, String email) {
using (var context = new DataContext()) {
User user = context.Users.FirstOrDefault(u => u.email.Equals(email));
if (user != null)
return user;
user = new User() { name = name, email = email };
context.Users.InsertOnSubmit(user);
context.SubmitChanges();
return user;
}
}
The code might get executed in parallel, but should not create duplicate users.
I would prefer to not create a unique constraint for the table for several reasons. Do you see any alternative that could be realized using Linq To SQL and without touching the database?