Рассмотрим ситуацию.
У меня есть таблица userlogin.userlogin имеет следующие поля:
userid(identity(1,1))
, username(unique)
, password(string)
У меня есть другая таблица, userRole со следующими полями.
userid(fk referencing userlogin)
, role(string)
Теперь предположим, что яхочу добавить пользователя с правами администратора в мою пустую базу данных приложения.В настоящее время я делаю следующее:
// Check Userlogin if it contains adminuser1 as username, if not, add adminuser1 with password xyz.
UserLogin login = new UserLogin();
login.username = "adminuser1";
login.password = "xyz";
context.UserLogins.Add(login);
context.SaveChanges();
// query again from database to get the userid
Userlogin user = context.UserLogins.Single(l => (l.username == "adminuser1") && (l.password == "xyz"));
int userid = user.userid;
UserRole admin = new UserRole();
admin.userid = userid;
admin.role = "admin";
context.UserRoles.Add(admin);
context.SaveChanges();
Я хочу сделать его менее хлопотным, если мы можем получить идентификатор пользователя userRecently Added, не делая еще один запрос.
Я имею в виду, я хочу сделать это, если это возможно.
UserLogin login = new UserLogin();
login.username = "adminuser1";
login.password = "xyz";
UserLogin user = context.UserLogins.Add(login);
UserRole admin = new UserRole();
admin.userid = user.userid;
admin.role = "admin";
context.UserRoles.Add(admin);
context.SaveChanges();
Обновление
Я также хотел узнать, есть ли способ сделать
context.UserLogins.Single(l => l == login);
вместо
context.UserLogins.Single(l => (l.username == "adminuser1") && (l.password=="xyz"));
потому что я использую один и тот же метод в больших классах во многих областях.