Ef core 2.2では、次のようにDbQueryを使用して生のSQL結果をオブジェクトにマッピングしました。
_public partial class AppDbContext{
public DbQuery<SimpleQueryModel> SimpleQM {get;set;}
}
_
その後
_var result=_dbContext.SimpleQM.FromSql(sqlString,params);
_
これは余分なテーブルを作成せず、うまく機能しません。 ef core 3.1では、DbQueryは廃止され、代わりにキーレスDbSetを使用するように指示されています。私はそれを次のように構成しました:
_public partial class AppDbContext{
public DbSet<SimpleQueryModel> SimpleQM {get;set;}
}
_
そしてModelCreatingで
_builder.Entity<SimpleQueryModel>().HasNoKey();
_
しかし、これは新しいDB移行で新しいテーブルを作成し、次のようにこのエンティティを無視するようにefに指示した場合
_builder.Entity<SimpleQueryModel>().HasNoKey().Ignore();
_
_dbContext.SimpleQM.FromSqlRaw();
を使用できません。これにより例外がスローされ、モデルがコンテキストに含まれていないことが通知されます。 ef core 3.1で同じ機能を実現するにはどうすればよいですか?
問題が解決しました!この構成を使用しました。
builder.Entity<SimpleQueryModel>().HasNoKey().ToView("view_name_that_doesnt_exist");