Migrations
Web アプリからクラス ライブラリ プロジェクトに移植しました。を呼び出せないことを除いて、すべて正常に動作しstatic class Roles
ます。
が配置されている名前空間using System.Web.Security;
を含めましたRoles
。
Configuration.cs ファイルの内容は次のとおりです。
namespace _DataContext.Migrations
{
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
using WebMatrix.WebData;
using System.Web.Security;
internal sealed class Configuration : DbMigrationsConfiguration<_DataContext.DataContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(_DataContext.DataContext context)
{
// This method will be called after migrating to the latest version.
// You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data. E.g.
//
// context.People.AddOrUpdate(
// p => p.FullName,
// new Person { FullName = "Andrew Peters" },
// new Person { FullName = "Brice Lambson" },
// new Person { FullName = "Rowan Miller" }
// );
//
SeedMembership();
}
private void SeedMembership()
{
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
// doesn't work either:
//var roles = (SimpleRoleProvider)Roles.Provider;
//var membership = (SimpleMembershipProvider)Membership.Provider;
if (Roles.RoleExists("Administrator"))
Roles.CreateRole("Administrator");
}
}
}
エラーメッセージは次のとおりです。
The name 'Roles' does not exist in the current context
ここで何が欠けていますか?
[編集]
私はさらに調査を行ってきましたが、メソッドSimpleRoleProvider
にアクセスするにはオブジェクトを作成する必要があるようです。RoleExists
しかし、なぜ私はこのようにしなければならないのですか?なぜ使用できないのですか:
if (Roles.RoleExists("Administrator"))
Roles.CreateRole("Administrator");
Roles
から来static class
ますか?