从 SignalR 中心更新 ASP MVC 数据库
Update ASP MVC database from SignalR hub
有没有办法直接从 SignalR 中心更新默认 ASP.NET MVC 数据库中的字段?
如您所知,默认情况下,在新的 MVC 模板项目中,Visual Studio 创建 3 个控制器,Home
、Account
和 Manage
。从这 3 个中可以很容易地访问数据库,如下所示:
using (var con = new ApplicationDbContext())
{
var userID = UserManager.FindById(User.Identity.GetUserId());
var userR = con.Users.FirstOrDefault(x => x.Id == userID.Id);
userR.Wins = 0;
userR.Loses = 0;
userR.Ties = 0;
con.SaveChanges();
}
其中 UserManager
默认定义如下:
private ApplicationUserManager _userManager;
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
我正在寻找一种在我的 SignalR Hub 中执行类似操作的方法。
据我所知,您的主要问题是获取中心内的当前用户 ID class 以更新数据库中的记录。如果是这样你可以尝试使用:
string userId = Context.User.Identity.GetUserId<string>();
所以最终代码将是:
using (var con = new ApplicationDbContext())
{
string userId = Context.User.Identity.GetUserId<string>();
var userR = con.Users.FirstOrDefault(x => x.Id == userId);
userR.Wins = 0;
userR.Loses = 0;
userR.Ties = 0;
con.SaveChanges();
}
当然是针对用户Id为字符串类型的情况
我想你要找的是这里:http://www.asp.net/signalr/overview/guide-to-the-api/mapping-users-to-connections
需要注意的一件事是,您必须配置信号器授权才能使其正常工作。
有没有办法直接从 SignalR 中心更新默认 ASP.NET MVC 数据库中的字段?
如您所知,默认情况下,在新的 MVC 模板项目中,Visual Studio 创建 3 个控制器,Home
、Account
和 Manage
。从这 3 个中可以很容易地访问数据库,如下所示:
using (var con = new ApplicationDbContext())
{
var userID = UserManager.FindById(User.Identity.GetUserId());
var userR = con.Users.FirstOrDefault(x => x.Id == userID.Id);
userR.Wins = 0;
userR.Loses = 0;
userR.Ties = 0;
con.SaveChanges();
}
其中 UserManager
默认定义如下:
private ApplicationUserManager _userManager;
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
我正在寻找一种在我的 SignalR Hub 中执行类似操作的方法。
据我所知,您的主要问题是获取中心内的当前用户 ID class 以更新数据库中的记录。如果是这样你可以尝试使用:
string userId = Context.User.Identity.GetUserId<string>();
所以最终代码将是:
using (var con = new ApplicationDbContext())
{
string userId = Context.User.Identity.GetUserId<string>();
var userR = con.Users.FirstOrDefault(x => x.Id == userId);
userR.Wins = 0;
userR.Loses = 0;
userR.Ties = 0;
con.SaveChanges();
}
当然是针对用户Id为字符串类型的情况
我想你要找的是这里:http://www.asp.net/signalr/overview/guide-to-the-api/mapping-users-to-connections
需要注意的一件事是,您必须配置信号器授权才能使其正常工作。