C# 存储过程调用中使用的模型的ModelBuilder.Ignore和[NotMapped]

C# 存储过程调用中使用的模型的ModelBuilder.Ignore和[NotMapped],c#,entity-framework,stored-procedures,asp.net-core,C#,Entity Framework,Stored Procedures,Asp.net Core,首先利用代码,我创建了一个存储过程,并使用 _context.MySQLModel.FromSql 我只是为存储过程创建了MySQLModel,我不想在数据库中创建具有该名称的表 因此,在我指定的模型中[NotMapping]: public class MySQLModel { [Key] public int IdMySQLModel { get; set; } public string Something { get; set; } public str

首先利用代码,我创建了一个存储过程,并使用

_context.MySQLModel.FromSql
我只是为存储过程创建了MySQLModel,我不想在数据库中创建具有该名称的表

因此,在我指定的模型中[NotMapping]:

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; }
包括

builder.Ignore<MySQLModel>();
builder.Ignore();
执行时,它会失败,并显示以下消息:

System.InvalidOperationException:无法为“MySQLModel”创建数据库集,因为上下文的模型中不包含此类型

所以我继续评论

//builder.Ignore<MySQLModel>();
//builder.Ignore();
再跑一次,跑得很完美。我继续修改或创建一个新模型,执行“添加迁移”,生成表的代码正在迁移中

有没有一种方法可以让它不为一个新表创建代码,并且仍然执行存储过程

谢谢

您需要使用(在
EF Core 2.1
中提供)而不是
DbSet

//builder.Ignore<MySQLModel>();
public DbQuery<MySQLModel> MySQLModel { get; set; }
var mySQLModels = _context.MySQLModel.FromSql("select * from MySQLModelView");