2016-10-31 14 views
1

コアMVCを使用してASP.NETコアアプリケーションを構築しています。 Linux環境でホストする予定だから、MySQLデータベースを使うことにしました。私は、DB接続とApplicationDBContext全体の設定を管理しました。 LINQ DBクエリは、Any()クエリが使用されるポイントまでうまく動作します。 そして、次の例外が発生します。Linq Any()throws error:文字列が有効なブール値として認識されない

An exception of type 'System.FormatException' occurred in Microsoft.EntityFrameworkCore.dll but was not handled in user code

Additional information: String was not recognized as a valid Boolean.

ここではサンプルコードがあります。この方法は、Startup.csのConfigureメソッドから呼び出されます。

public async static void Initialize(IApplicationBuilder app) 
{ 
     var services = app.ApplicationServices; 
     var dbContext = services.GetRequiredService<ApplicationDbContext>(); 

     var countResult = (dbContext.Users.Count() > 0); // true 
     var anyresult = dbContext.Users.Any(); // exception 
} 

自動的に翻訳されたSQLクエリは次のようになります。

SELECT CASE 
    WHEN EXISTS (
     SELECT 1 
     FROM `AspNetUsers` AS `a`) 
    THEN ('1') ELSE ('0') 
END 

これはどちらか「1」または「0」とシステムの試行を返します。この型の文字列をブール値に変換しますが、失敗して上記の例外がスローされます。 例えば、私はすべてで)(どれを使用していないことにより、その周りに行くことを試みたが、その後、私は組み込み関数のいくつかは、同様にこの例外を取得していることが判明しました: userManager.AddToRolesAsync

そして、ここに私のConfigureServices方法です:

public void ConfigureServices(IServiceCollection services) 
{ 
    var sqlConnectionString = Configuration.GetConnectionString("DataAccessMySqlProvider"); 

    // Add EF services to the services container. 
    services 
     .AddDbContext<ApplicationDbContext>(options => 
      options.UseMySQL(
       sqlConnectionString, 
       b => b.MigrationsAssembly("MyAssembly") 
      ) 
     ); 

    services.AddIdentity<User, IdentityRole>() 
     .AddEntityFrameworkStores<ApplicationDbContext>() 
     .AddDefaultTokenProviders(); 

    // Add framework services. 
    services.AddMvc(); 
} 

これは修正できますか?ここで

は私project.jsonファイルです:

"dependencies": { 
    "Microsoft.NETCore.App": { 
     "version": "1.0.1", 
     "type": "platform" 
    }, 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0", 
    "Microsoft.AspNetCore.Mvc": "1.0.1", 
    "Microsoft.AspNetCore.Razor.Tools": { 
     "version": "1.0.0-preview2-final", 
     "type": "build" 
    }, 
    "Microsoft.AspNetCore.Routing": "1.0.1", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1", 
    "Microsoft.AspNetCore.StaticFiles": "1.0.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0", 
    "Microsoft.EntityFrameworkCore": "1.0.1", 
    "Microsoft.AspNetCore.Identity": "1.0.0", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", 
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0", 
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0", 
    "SapientGuardian.EntityFrameworkCore.MySql": "7.1.9" 
    }, 
    "tools": { 
    "BundlerMinifier.Core": "2.0.238", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", 
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final", 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dotnet5.6", 
     "portable-net45+win8" 
     ] 
    } 
    }, 
    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 
    "runtimeOptions": { 
    "configProperties": { 
     "System.GC.Server": true 
    } 
    } 
+0

そのクエリを生成するコードのビットを表示できますか? – IamNguele

+0

Linq文も追加してください。役に立つかもしれません。 – Tseng

+0

ちょっと、サンプルコードを説明に追加しました。 –

答えて

0

私は著者がブール変換の問題を修正し、それが作業を開始し、バージョン7.1.10にSapientGuardian.EntityFrameworkCore.MySqlパッケージをアップグレードしました。

関連する問題