質問: Entity Framework Coreを使用して`dbData.Database.SqlQuery`を削除するテーブルデータとランクを返すフルテキスト検索クエリの生のSQLクエリを作成するソリューションが見つかりません。 Entity Framework Coreで生のSQLクエリを作成する方法は、 `dbData.Product.FromSql("SQL SCRIPT");`する方法だけ`dbData.Product.FromSql("SQL SCRIPT");`クエリで返されたランクをマップするDbSetがないため、便利ではありません。 **何か案は???**
回答: 2018年5月7日以降に入手可能なEF Core 2.1 Release Candidate 1を使用している場合は、提案されているQueryタイプの新機能を利用できます。 クエリの種類は何ですか? > エンティティタイプに加えて、EFコアモデルにはクエリタイプを含めることができます。これは、エンティティタイプにマッピングされていないデータに対してデータベースクエリを実行するために使用できます。 > > クエリタイプを使用する場合 > アドホックFromSql()クエリの戻り型として機能します。 > > データベースビューへのマッピング > > 主キーが定義されていないテーブルへのマッピング。 > > モデルで定義されているクエリへのマッピング。 > > だからあなたはもはやあなたの質問に対する答えとして提案されているすべてのハックや回避策をする必要はありません。次の手順に従ってください。 最初に、 `DbQuery`型の新しいプロパティを定義しました。ここで、 `T`はSQLクエリの列値を`DbQuery`するクラスの型です。だからあなたの`DbContext`では、これを持っているでしょう: ``` public DbQuery SomeModels { get; set; } ``` 次に、 `DbSet`と同じように`FromSql`メソッドを使用します。 ``` var result = context.SomeModels.FromSql("SQL_SCRIPT").ToList(); var result = await context.SomeModels.FromSql("SQL_SCRIPT").ToListAsync(); ``` また、DBContextは部分クラスなので、1つ以上の個別のファイルを作成して自分の「生のSQL DbQuery」定義を最適に整理することができます。