Самый простой способ - выполнить сопоставление имени пользователя в БД в соответствии с его правилами без учета регистра, а сопоставление пароля в .NET в соответствии с его правилами с учетом регистра:
db.Users.Where(u => u.Username == username).ToList().Where(u => u.Password == password).FirstOrDefault();
ToList()
перемещается из дБна основе LINQ для объектно-ориентированного LINQ, и поскольку в любом случае будет только один соответствующий случай, влияние на производительность при этом будет незначительным.
Тем не менее все еще существует проблема сохранения пароля в базе данных!