コア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
}
}
そのクエリを生成するコードのビットを表示できますか? – IamNguele
Linq文も追加してください。役に立つかもしれません。 – Tseng
ちょっと、サンプルコードを説明に追加しました。 –