EF Core 3 DbQuery 等效功能
EF Core 3 DbQuery equivalent functionality
在 ef core 2.2 中,我使用 DbQuery 将原始 sql 结果映射到对象,如下所示:
public partial class AppDbContext{
public DbQuery<SimpleQueryModel> SimpleQM {get;set;}
}
然后
var result=_dbContext.SimpleQM.FromSql(sqlString,params);
这不会产生任何额外的 table 并且工作正常。
在 ef core 3.1 中,DbQuery 已过时,并告诉我改用无键 DbSet。
我将其配置如下:
public partial class AppDbContext{
public DbSet<SimpleQueryModel> SimpleQM {get;set;}
}
并在模型创建中
builder.Entity<SimpleQueryModel>().HasNoKey();
但这将在新的数据库迁移中创建一个新的 table,如果我告诉 ef 如下所示忽略此实体
builder.Entity<SimpleQueryModel>().HasNoKey().Ignore();
我不能使用 _dbContext.SimpleQM.FromSqlRaw();
这会抛出异常并告知模型未包含在上下文中。
我怎样才能在 ef core 3.1 中实现相同的功能?
问题解决了!
刚用过这个配置。
builder.Entity<SimpleQueryModel>().HasNoKey().ToView("view_name_that_doesnt_exist");
在 ef core 2.2 中,我使用 DbQuery 将原始 sql 结果映射到对象,如下所示:
public partial class AppDbContext{
public DbQuery<SimpleQueryModel> SimpleQM {get;set;}
}
然后
var result=_dbContext.SimpleQM.FromSql(sqlString,params);
这不会产生任何额外的 table 并且工作正常。 在 ef core 3.1 中,DbQuery 已过时,并告诉我改用无键 DbSet。 我将其配置如下:
public partial class AppDbContext{
public DbSet<SimpleQueryModel> SimpleQM {get;set;}
}
并在模型创建中
builder.Entity<SimpleQueryModel>().HasNoKey();
但这将在新的数据库迁移中创建一个新的 table,如果我告诉 ef 如下所示忽略此实体
builder.Entity<SimpleQueryModel>().HasNoKey().Ignore();
我不能使用 _dbContext.SimpleQM.FromSqlRaw();
这会抛出异常并告知模型未包含在上下文中。
我怎样才能在 ef core 3.1 中实现相同的功能?
问题解决了! 刚用过这个配置。
builder.Entity<SimpleQueryModel>().HasNoKey().ToView("view_name_that_doesnt_exist");