gpt4 book ai didi

c# - 如何同步使用 UserManager?

转载 作者:行者123 更新时间:2023-12-04 11:17:00 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How would I run an async Task<T> method synchronously?

(25 个回答)


3个月前关闭。




在我的其中之一 IDatabaseInitializerSeed给我的方法 DbContext我将初始数据插入数据库。除其他外,还有一些用户需要初始化。但据我使用 Microsoft.AspNet.Identity.EntityFramework.UserStoreMicrosoft.AspNet.Identity.UserManager它只有异步方法 DbUpdateConcurrencyException如下:

private static void CreateUser(DbContext context, string[] roles, string userName, string userEmail) {

// given context is
var user = new ApplicationUser { /* ... fields init */ };

var userStoreAdapter = new ApplicationUserRepository(context);
var manager = new UserManager<ApplicationUser>(userStoreAdapter);

// pass the creation to manager by calling it synchronously. See UserManagerExtensions
manager.Create(user, Domain.Constants.DefaultPassword);
manager.AddToRoles(user.Id, roles);

context.SaveChanges(); // throws DbUpdateConcurrencyException. See another approach below.
}

所以问题是是否有办法使用 UserManagerDbContext没有并发问题?

我尝试了以下来自 Optimistic Concurrency Patterns 的方法但这不会创建用户:
bool isSaved = true;
do
{
try
{
context.SaveChanges();
isSaved = true;
}
catch (DbUpdateConcurrencyException ex)
{
foreach (var entry in ex.Entries)
{
entry.Reload();
}
isSaved = false;
}
} while (!isSaved);

最佳答案

var result = Task.Run(() => {
/*whatever you want here*/
}).Result;

// Do whatever u want with the result after

关于c# - 如何同步使用 UserManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32847368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com