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");