質問: 次のセットアップがありますが、ファイル`Blazor.MonoRuntime.targets` (MSB3073)の行439に関連する不明瞭なエラーが表示されるため、ビルドを完了できません。 これは本質的に、Entity Framework CoreがBlazor preview 6で機能しないことを意味しますか? 詳細: > * Asp.net Hosted Blazor > * AspNetCore.Blazor(3.0.0-preview6.19307.2) > * Microsoft.EntityFrameworkCore(3.0.0-preview6.19304.10) > * Microsoft.EntityFrameworkCore.Design(3.0.0-preview6.19304.10) > * Microsoft.EntityFrameworkCore.SqlServer(3.0.0-preview6.19304.10) > **ハックソリューションによって解決されました!** > どういうわけか私はすべてを解決し、物事をエンドツーエンドで実行させることができました。大きな、重要なことは次のとおりだったと思います。 > * BlazorクライアントおよびサーバープロジェクトがEntity Frameworkを直接参照しないようにします > * Blazorクライアントが、生成されたエンティティを使用して(直接または間接的に)プロジェクトを参照しないようにします。モデルにアクセスするには、生成されたエンティティの複製を作成します(生成されたクラスから「部分」を削除しました) > >
回答: ここで、いくつかの明確化が必要です。 * BlazorのクライアントプロジェクトでEntity Frameworkを使用することはできません。 Entity Frameworkはサーバーテクノロジーです。 * アプリケーションのサーバープロジェクトでEntity Frameworkを使用できます。 * クライアント側とサーバーホスティング側の間の通信は通常、Http呼び出し(HttpClientサービス)を介して行われますが、SignleRを使用することもできます。 * Http呼び出しを有効にするには、Httpルーティングエンドポイントを公開する必要があります...これは、必要なエンドポイントでWeb Apiを使用して有効にすることができます。 Web Apiで公開されたメソッド(コントローラーのメソッド)は、Entity Frameworkオブジェクトを介してデータベースに直接(またはリポジトリ、サービスなどを定義する場合は間接的に)アクセスし、クエリされたデータを呼び出しメソッド(HttpClientメソッド)に返します。 私の回答では、特にBlazorクライアント側のアプリに関連していますが、Blazorサーバー側のアプリに関してはほとんど真実です。 Blazorはサーバー上で実行されるため、Blazorのサーバー側アプリではWeb Apiを使用する必要はありません。このような場合、通常のサービスを定義してデータベースからデータを取得し、呼び出しメソッドに渡すことができます(ここではHttpClientは関係しません)。 * 共有プロジェクトは、フロントエンドとバックエンドの両方で使用できるオブジェクトを含めることを目的としています。これは、Modelオブジェクトを定義できる場所です。たとえば、データを取得し、それをEmployeeオブジェクトのリストとしてクライアントに渡すために使用できるEmployeeクラスを定義できます。クライアントでは、取得したデータを保存するEmployeeオブジェクトのリストを定義できます。要するに、サーバーに適したオブジェクトとクライアントに適したオブジェクトの2種類のオブジェクトを定義する必要はありません(クライアントがAngularアプリだとします)。 お役に立てれば..