首先利用代码,我创建了一个存储过程,我用它来调用
_context.MySQLModel.FromSql
我只是为存储过程创建了 MySQLModel,我不想在数据库中创建具有该名称的表。
所以在模型中我指定了[NotMapped]:
public class MySQLModel
{
[Key]
public int IdMySQLModel { get; set; }
public string Something { get; set; }
public string SomethingTwo { get; set; }
}
在ApplicationDbContext我添加了
public DbSet<MySQLModel> MySQLModel { get; set; }
和下
protected override void OnModelCreating(ModelBuilder builder)
包括
builder.Ignore<MySQLModel>();
执行时,失败并显示以下消息:
System.InvalidOperationException:无法为“MySQLModel”创建 DbSet,因为此类型未包含在上下文的模型中。
所以我继续评论
//builder.Ignore<MySQLModel>();
再次运行,运行完美。我继续修改或创建一个新模型,执行“添加迁移”,并在迁移中生成表的代码。
有没有办法获取它,这样它就不会为新表创建代码并仍然执行存储过程?
谢谢!
DbQuery<>
(在 EF Core 2.1
中可用)而不是 DbSet<>
:
public DbQuery<MySQLModel> MySQLModel { get; set; }
那就不需要调用
builder.Ignore<MySQLModel>();
和使用[NotMapped]
您可以按照类似的方式使用它:
var mySQLModels = _context.MySQLModel.FromSql("select * from MySQLModelView");
我有同样的错误,无法在今天的版本中使用 Dbquery。有没有人有解决办法?