В моем ASP.Net MVC 5 проекта, у меня есть пользовательский класс инициализатора:пользователей Регистрации синхронно во время контекста семени
class CustomInitializer : DropCreateDatabaseIfModelChanges<GhazanetContext>
Я хочу, чтобы засеять контекст с несколькими пользователями. Проблема в том, что новый MVC 5 равен async
, и все, что я пытаюсь сделать, терпит неудачу. Вот мой код, который пытается создать пользователя:
private void AddRestaurant(RegisterRestaurantViewModel model, DBContext db)
{
User user = new User(model.UserName) { Addresses = new List<Address>(), Role = "Restaurant" };
user.Addresses.Add(model.Address);
Task.Factory.StartNew(async() =>
{
await Users.Create(user); // GETS STUCK HERE
var newUser = db.Users.Where(u => u.UserName == user.UserName).FirstOrDefault();
var restaurant = new Restaurant(model) { User = newUser };
db.Restaurants.Add(restaurant);
db.SaveChanges();
await Secrets.Create(new UserSecret(model.UserName, model.Password));
await Logins.Add(new UserLogin(user.Id, IdentityConfig.LocalLoginProvider, model.UserName));
const string role = "Restaurant";
if (!await Roles.RoleExists(role))
await Roles.CreateRole(new Role(role));
await Roles.AddUserToRole(role, user.Id);
}).RunSynchronously();
}
}
Когда я запускаю этот код, он застревает в строке выше, но когда я запускаю его на сайте и регистрации пользователей, он прекрасно работает. Здесь что-то не хватает?
у вас есть опечатка для «застрял», это не «акции» – DarthVader
@DarthVader LOL. Благодарю. Это то, что происходит, когда вы отправляете вопрос между двумя частями вашего сна: D BTW, я был в запасах в то время, может быть, именно поэтому! –
Это действительно компилируется? У встроенных классов 'Users' /' Roles' нет методов async. –