EF Core 3 DbQuery等效功能

时间:2019-12-20 15:28:03

标签: c# .net-core entity-framework-core ef-core-3.0 ef-core-3.1

在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();

但是这将在新的数据库迁移中创建一个新表,并且如果我告诉ef如下忽略该实体

builder.Entity<SimpleQueryModel>().HasNoKey().Ignore();

我不能使用_dbContext.SimpleQM.FromSqlRaw();,这将引发异常并告知模型未包含在上下文中。 如何在ef core 3.1中实现相同的功能?

1 个答案:

答案 0 :(得分:3)

问题解决了! 只是使用了此配置。

builder.Entity<SimpleQueryModel>().HasNoKey().ToView("view_name_that_doesnt_exist");