2013-08-12 1 views
0

Так что я пытаюсь посеять свою базу данных с помощью следующего инициализатораВы должны вызвать «WebSecurity.InitializeDatabaseConnection» исключение, когда у меня уже есть

public class DbInitializer : DropCreateDatabaseAlways<IAMContext> 
{ 
    protected override void Seed(IAMContext context) 
    { 

     WebSecurity.InitializeDatabaseConnection("IAMContext", 
      "UserProfile", "UserId", "UserName", autoCreateTables: true); 
     var roles = Roles.Provider; 
     var membership = Membership.Provider; 

     if (!roles.RoleExists("Admin")) 
     { 
      roles.CreateRole("Admin"); 
     } 
     if (!WebSecurity.UserExists("test")) 
     { 
      WebSecurity.CreateUserAndAccount("test", "password"); 
     } 

     if (!roles.GetRolesForUser("test").Contains("Admin")) 
     { 
      roles.AddUsersToRoles(new[] { "test" }, new[] { "admin" }); 
     } 

     context.Products.Add(new Product 
     { 
      Id = 1, 
      Name = "Homunculi", 
      Price = 85, 
      LongDescription = "Happens when failed human transmutations occur", 
      ShortDescription = "Failed Xmute", 
      media = "CD" 
     }); 


     base.Seed(context); 
    } 
} 

Я всегда получаю исключение, что я должен назвать WebSecurity.InitializeDatabaseConnection первым , Похоже, у меня уже есть, поэтому я немного смущен. Любая помощь будет большой. Я должен упомянуть, что я новичок в аутентификации веб-форм. Спасибо за понимание и ответы!

ответ

0

Отъезд article on seeding and customizing SimpleMembership. Это может дать вам некоторые подсказки по правильной инициализации базы данных SimpleMembership. В статье обсуждается изменение способа инициализации SimpleMembership, которое более прямолинейно, чем использование InitializeSimpleMembershipAttribute. Вам нужно иметь вызов для инициализации базы данных в нескольких местах, потому что посев не всегда происходит, и он должен быть в вашем методе семян для его работы. Таким образом, безопасный метод должен сначала проверить, была ли она уже инициализирована, прежде чем вы вызываете ее, как показано в следующем фрагменте кода.

if (!WebMatrix.WebData.WebSecurity.Initialized) 
     WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection("SimpleSecurityConnection", 
      "UserProfile", "UserId", "UserName", autoCreateTables: true); 
+0

вы бы не знали, как семени userProfile с помощью сложного объекта, а не просто строки, не так ли? Я продолжаю получать странные ошибки. – Fitzpleasure

+0

Fitzpleasure - при посеве userProfile сложным объектом, пожалуйста, откройте еще один вопрос, который содержит примеры кода и более подробную информацию о типе ошибки, и я постараюсь ответить на него. –