44

編集:この質問は時代遅れです

これを尋ねた時点で、Identity Framework は動くターゲットでした。著者はかなり多くのことを変更し、他のいくつかを分離して、すべてを簡単にしました.

githubのAsp.NET Identity Sample プロジェクトをご覧ください。


ユーザー管理が必要な小さなアプリケーションを作成しています。登録は許可されていません。代わりに、ログイン情報を作成および変更するスーパー ユーザーが存在します。

私は新しいASP.NET Identityメンバーシップ システムを使用していますが、確かに、ユーザーの作成とロールの追加は簡単で直感的です。

さて、私の質問: 生成された AccountController クラスで使用される AuthenticationIdentityManager クラスを使用してユーザーのリストを取得する方法は? コントローラーからユーザー リストにアクセスする方法が見つかりませんでした。

(ちなみに、新しい「アイデンティティ」という名前は、人によってはすばらしく聞こえるかもしれませんが、検索するのは面倒です。)

編集:これをやろうとすると

ApplicationDbContext UsersContext = new ApplicationDbContext();
UsersContext.Users.ToList(); // Exception

例外が発生しますInvalid column name 'Discriminator'。ApplicationDbContext の定義は、新しいアプリケーション ウィザードによって自動的に生成されます。

using Microsoft.AspNet.Identity.EntityFramework;

namespace Cobranzas.Models
{
    public class ApplicationUser : User
    {

    }
    public class ApplicationDbContext : IdentityDbContextWithCustomUser<ApplicationUser>
    {

    }
}

だから私の推測では、そのDiscriminator列は と区別ApplicationUserするためのものUserです。ただし、データベースには存在しません (アプリケーションによって自動的に作成されました)。

4

6 に答える 6

16
  1. ASP .NET MVC5デフォルトでプロジェクトを作成
  2. ASP .NET Identityテーブルを適切に作成し、接続文字列も変更します。
  3. ユーザーを取得するには、次のテスト A を実行するだけですAccountController 。B に移動します。ダミーのメソッドを作成し、そこに配置します。
var context = new ApplicationDbContext();

var allUsers = context.Users.ToList();

ここに画像の説明を入力

于 2014-01-06T16:51:03.840 に答える
4

RTM の場合、DbContextすべてのユーザーを列挙するために、特定のストアの実装にドロップダウンする必要があります。次のリリースでは、オプションのIQueryableUsers/Roles メソッドを Manager クラスに追加して、ストアが実装してIQueryablesユーザーとストアの両方に公開できるようにする予定です。

于 2013-09-16T17:20:19.693 に答える
2
using System.Linq;
using System.Data;
using System.Data.Entity;

        var db = new ApplicationDbContext();
        var Users = db.Users.Include(u => u.Roles);
于 2017-09-26T10:02:48.470 に答える
0

これは、明示的に権限タイプを設定することで実行できます。

var userStore = new UserStore<IdentityUser>();
var userManager = new UserManager<IdentityUser>(userStore);
IQueryable<IdentityUser> usersQuery = userManager.Users;
List<IdentityUser> users = usersQuery.ToList();

輸入港:

using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using System.Linq;
using System.Collections.Generic;
于 2020-05-20T09:26:20.293 に答える