Я пытаюсь засеять некоторых пользователей SimpleMembershipProvider
. Я добавил несколько столбцов в таблицу UserProfile, например номер мобильного телефона. Когда я пытаюсь добавить пользователя с номером мобильного телефона, компилятор сообщает мне:
The name 'Mobile' does not exist in the current context
Это класс:
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);
var roles = (SimpleRoleProvider)Roles.Provider;
var membership = (SimpleMembershipProvider)System.Web.Security.Membership.Provider;
if (!roles.RoleExists("Administrator"))
roles.CreateRole("Administrator");
if (membership.GetUser("Username", false) == null)
membership.CreateUserAndAccount("Username", "Pass", false,
new Dictionary<string, object>
{
{ Mobile = "+311122334455" },
});
/*if (!WebSecurity.UserExists("test"))
WebSecurity.CreateUserAndAccount(
"Username",
"password",
new {
Mobile = "+311122334455",
FirstName = "test",
LastName = "test",
LoginCount = 0,
IsActive = true,
});
*/
}
}
}
Если я использую WebSecurity
, все будет хорошо.
Что я здесь делаю не так?
0
Yustme
11 Май 2013 в 14:01
1 ответ
Лучший ответ
Именно так вы создаете свой Dictionary
, вы не можете:
membership.CreateUserAndAccount("Username", "Pass", false,
new Dictionary<string, object>
{
{ Mobile = "+311122334455" }, // Mobile won't compile here
});
Поэтому вместо этого используйте:
membership.CreateUserAndAccount("Username", "Pass", false,
new Dictionary<string, object>
{
{ "Mobile", "+311122334455" }, // Mobile should be the string in the string, object pair
});
Как бы то ни было, WebSecurity
делает то же самое, что и вы, но избавляет вас от необходимости указывать точного поставщика в вашем коде.
1
Andy Brown
13 Май 2013 в 03:13
Похожие вопросы
Новые вопросы
asp.net-mvc-4
ASP.NET MVC 4 является четвертой основной версией платформы ASP.NET Model-View-Controller для веб-приложений.
Membership.Provider
, но приводит его к общему базовому классу для всех поставщиков вместоSimpleMembershipProvider
(что потенциально лучше для IoC и / или DI). Если вы не очень беспокоитесь о производительности, я бы использовал WebSecurity.