EF6、MysqlDB 和 Blazor,Blazor 不工作

Posted

技术标签:

【中文标题】EF6、MysqlDB 和 Blazor,Blazor 不工作【英文标题】:EF6, MysqlDB, and Blazor, Blazor not working 【发布时间】:2021-01-31 04:00:40 【问题描述】:

我有一个项目包含多个应用程序使用的数据库上下文。我创建了一个基本的 blazor 项目并尝试创建我的一个数据库上下文来测试检索信息,但我不断收到此错误并且页面什么也没有显示。有任何想法吗?上下文库是 NetCoreApp 3.1,Blazor Web 应用是 NetCoreApp 5.0

    Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
      Unhandled exception rendering component: System.Net.NameResolution is not supported on this platform.
System.PlatformNotSupportedException: System.Net.NameResolution is not supported on this platform.
   at System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
   at mysqlConnector.Core.ServerSession.OpenTcpSocketAsync(ConnectionSettings cs, ILoadBalancer loadBalancer, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ServerSession.cs:line 888
   at MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, Int32 startTickCount, ILoadBalancer loadBalancer, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ServerSession.cs:line 371
   at MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection connection, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ConnectionPool.cs:line 110
   at MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection connection, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ConnectionPool.cs:line 140
   at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 846
   at MySqlConnector.MySqlConnection.OpenAsync(Nullable`1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 410
   at MySqlConnector.MySqlConnection.Open() in /_/src/MySqlConnector/MySqlConnection.cs:line 376
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection(Boolean errorsExpected)
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternal(Boolean errorsExpected)
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected)
   at Pomelo.EntityFrameworkCore.MySql.Storage.Internal.MySqlRelationalConnection.Open(Boolean errorsExpected)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReader(RelationalCommandParameterObject parameterObject)
   at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.Enumerator[[System.Boolean, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].InitializeReader(DbContext _, Boolean result)
   at Pomelo.EntityFrameworkCore.MySql.Storage.Internal.MySqlExecutionStrategy.Execute[Boolean,Boolean](Boolean state, Func`3 operation, Func`3 verifySucceeded)
   at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.Enumerator[[System.Boolean, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
   at System.Linq.Enumerable.Single[Boolean](IEnumerable`1 source)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.Execute[Boolean](Expression query)
   at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.Execute[Boolean](Expression expression)
   at System.Linq.Queryable.Any[Type](IQueryable`1 source)
   at WebApplication.Pages.FetchData.BuildRenderTree(RenderTreeBuilder __builder) in C:\Users\Matth\Documents\GitHub\ProjectAzurite\WebApplication\Pages\FetchData.razor:line 9
   at Microsoft.AspNetCore.Components.ComponentBase.<.ctor>b__6_0(RenderTreeBuilder builder)
   at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment)
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry)
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()

【问题讨论】:

您忘记分享任何导致错误的代码。 通过 mysql pomelo 从我的数据库中通过脚手架生成的上下文的基本创建。只需调用 new AssetContext(扩展 dbcontext)就可以破坏 blazor。 是的,这些信息和代码应该在您的帖子中(以便其他人可以提供帮助),而不是 cmets。 该信息在我的帖子中:“创建我的数据库上下文之一以测试检索信息”,您可以在堆栈跟踪中清楚地看到它在创建 dbcontext 时由于一些奇怪的错误而失败.这不是代码问题,而是框架可比性问题,我想知道是否有解决方法。 “这不是代码问题,而是...” - 我不认为它是“代码问题”。您应该发布相关代码,因为代码总是提供围绕问题的上下文,这有助于其他人更好地了解问题。 【参考方案1】:

Jetbrains Blazor 服务器应用程序创建存在错误,通过 Visual Studio 创建 Blazor 服务器应用程序已解决我的问题

【讨论】:

【参考方案2】:

我有同样的问题,但在 PostgreSQL 上。似乎并非所有 db 驱动程序都支持 blazor wasm;例如SQL Server 似乎也是如此(但 CosmosDb 不是): https://github.com/dotnet/SqlClient/issues/599

另见:https://blog.jeremylikness.com/blog/ef-core-and-cosmosdb-with-blazor-webassembly/

【讨论】:

以上是关于EF6、MysqlDB 和 Blazor,Blazor 不工作的主要内容,如果未能解决你的问题,请参考以下文章

Razor 页面与服务器端 Blazor

.net Core 的实体框架 6。在 Blazor 服务器端

如何将 blazor 客户端/服务器应用程序发布到 linux Web 服务器?无权访问 ssh 并且 dotnet publish 不提供 index.html

如何在没有 Javascript 的情况下将焦点设置到页面顶部?

EF6基础系列(十一)---EF6中的异步查询和异步保存

MiniProfiler(MiniProfiler.EF6监控调试MVC5和EF6的性能)