Когда я запускаю приложение, я хочу иметь возможность создавать 2 таблицы ...
Не уверен, правильно ли я это понимаю, но вы можете seed исходные данные в базу данных с EF Code-First.Пример того, как это сделать, приведен здесь:
Entity Framework Вставка исходных данных при перестроении
Если вы действительно хотите воссоздавать таблицы при каждом запуске приложения, вы можетеиспользуйте инициализатор DropCreateDatabaseAlways<T>
, как указано в примере.
Затем, каждый раз, когда я регистрирую нового пользователя, поэтому каждый раз, когда я добавляю пользователя в таблицу Users, я хочу иметь возможность использовать UserTypes.таблица.
Для этого вы должны загрузить существующий UserType
, который вы хотите назначить из базы данных, чтобы он был присоединен к контексту, а затем создать нового пользователя:
using (var context = new MyContext())
{
var userType = context.UserTypes
.Single(u => u.Type == TypeEnum.Admin.ToString());
var newUser = new User { TypeId = userType, Username = ... etc. };
context.Users.Add(newUser);
context.SaveChanges();
}
Присоединение к контексту - либо путем загрузки из базы данных, либо явным вызовом Attach
- гарантирует, что UserType
не будет продублирован, т. Е. Команда INSERT не будет отправлена в базу данных для UserType
.