3

我正在使用最新的ASP.NET MVC,身份和實體框架。使用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()方法中):

  • 數據庫中創建
  • 我得到的線result = userManager.SetLockoutEnabled(user.Id, false);

我認爲這將是在更換連接字符串作爲簡單的InvalidOperationException: UserId not found - 所以我在做什麼錯?或換句話說,如何將解決方案從SQL Server Express轉換爲SQL Server Compact?

+1

我按照你的指示,一切正常。 – 2014-09-06 22:23:27

回答

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;" /> 

無論如何,這個問題本身包含在Identity2中使用sqlce的分步驟。也許它會幫助別人。

相關問題