3

Я использую последние ASP.NET MVC, Identity и Entity Framework.Использовать SQL Server Compact с идентификатором ASP.NET

sample Identity project использует Sql Server Express. Я хочу использовать Sql Server Compact.

Что я сделал:

  • Создано новое пустое решение (не MVC шаблон)

  • установлен образец проекта: Install-Package Microsoft.AspNet.Identity.Samples -Pre

  • Установлено: Install-Package Microsoft.SqlServer.Compact

  • установлен: Install-Package EntityFramework.SqlServerCompact

  • Измененная строка соединения по умолчанию в web.config для:

    <add name="Foo" 
        providerName="System.Data.SqlServerCe.4.0" 
        connectionString="Data Source=|DataDirectory|\Foo.sdf;" /> 
    
  • Изменено ApplicationDbContext использовать строку Foo соединения:

    ApplicationDbContext() : base("name=Foo", false) 
    

Проблема, когда ApplicationDbContext доступен в первый раз (во время посева, в методе ApplicationDbInitializer.InitializeIdentityForEF()):

  • баз данные создан
  • я получаю InvalidOperationException: UserId not found для линии result = userManager.SetLockoutEnabled(user.Id, false);

Я думал, что это будет так же просто, как изменение строки соединения - так что я делаю не так? Или по-другому, Как преобразовать решение из SQL Server Express в SQL Server Compact?

+1

Я слежу за вашими инструкциями, и все работает правильно. –

ответ

3

Обнаружили ошибку. Моя строка соединения не так, у меня было:

<add name="Foo" 
    providerName="System.Data.SqlServerCe.4.0" 
    connectionString=" 
     Data Source=|DataDirectory|\Foo.sdf; 
     Persist Security Info=false; 
     "/> 

который не работает (XML, так думали пробелы игнорируются, это не так), в то время как это делает:

<add name="Foo" 
    providerName="System.Data.SqlServerCe.4.0" 
    connectionString="Data Source=|DataDirectory|\Foo.sdf;Persist Security Info=false;" /> 

Несмотря на это, сам вопрос содержит пошаговое руководство для использования sqlce с Identity2. Может быть, это поможет кому-то.

Смежные вопросы