2016-06-01 3 views
0

デフォルトのASP.NET MVCデータベースのフィールドをSignalRハブから直接更新する方法はありますか?SignalRハブからASP MVCデータベースを更新する

ご存じのように、新しいMVCテンプレートプロジェクトでは、デフォルトで、Visual Studioは3つのコントローラ、HomeAccount、およびManageを作成します。私は私のSignalRにこのような何かを行う方法を探しています

private ApplicationUserManager _userManager; 
public ApplicationUserManager UserManager 
{ 
    get 
    { 
     return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
    } 
    private set 
    { 
     _userManager = value; 
    } 
} 

UserManagerは、次のようにデフォルトで定義されて

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(); 
} 

:これら3から、このようなデータベースにアクセスすることは容易ですハブ

+0

私は質問があると思います、なぜあなたはしたいですか? WebSocketを使用して、データベースを更新するのではなく、リアルタイムでUIを更新します。しかし、あなたが本当にそんな気がするなら、ハブのコンテキストを呼び出すことができます。 –

+0

よく、クライアント側からハブで受け取った内容に基づいて、DBの行を更新したいと考えています。ハブで行う必要はありませんが、どこにいるのか分かりません。ハブの文脈をどのように呼び出すことができるかの例を教えてください。 より具体的には、私はチェスゲームを実装しています。終了すると、プレイヤーが持つ勝利/引き分け/敗北回数を増やしたいと思います。 – geoko93

+0

[this](http://stackoverflow.com/a/10914638/4204026)のようなもの私は信じています。あなたが何をしているのかがあまりにも確かではありません。 –

答えて

0

私の主な問題は、ハブクラス内の現在のユーザーIDを取得してデータベースのレコードを更新することです。もしそうなら、あなたは使用しようとすることができます:だから、最終的なコードがあることを行っている

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は、文字列型

+0

人生保護人、私は十分な評判を持っていれば私はあなたの応答をupvoteだろう! – geoko93

関連する問題