如何解决当我从数据库导入模型时,我不希望在数据库模型中生成实例到数据库
我是ASP.net核心的新手
通过此命令,我从数据库中导入模型:
Scaffold-DbContext "Server=localhost; Database=prueba2; Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
我的数据库称为prueba2
,相应的模型在Models
文件夹中创建。将在数据库配置所在的位置创建文件prueba2Context
。
在prueba2Context
中,将显示与数据库的连接。
/*protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
#warning To protect potentially sensitive information in your connection string,you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.
optionsBuilder.UseSqlServer("Server=localhost; Database=prueba2; Trusted_Connection=True;");
}
}*/
我对这段代码发表评论,因为我看过在Startup.cs
文件中配置连接的教程,特别是我在 Startup.cs
内部使用此代码来配置数据库:
public void ConfigureServices(IServiceCollection services)
{
// ******In this line I config the use of my sql server database****
services.AddDbContext<prueba2Context>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddControllers();
}
然后在我的控制器中以以下方式注入对数据库的使用:
private readonly prueba2Context context;
public MyControllerDataController(ILogger<MyControllerData> logger,prueba2Context context)
{
_logger = logger;
this.context = context;
}
所以我可以使用以下样式的数据库:
context.anyTable.Where(x => x.Id == id).FirstOrDefault();
如果再次使用该命令从数据库中导入模型,则会再次创建所有文件。因此,先前注释的行将不会被注释。我的想法是按照我的指示将数据库实例放在startup.cs
中。在创建数据库模型时,如何使prueba2Context
中的数据库实例不出现?
解决方法
Scaffold-DbContext命令应在首次导入数据库时使用,此后,应使用Migrations更新代码中的所有更改:
https://www.learnentityframeworkcore.com/walkthroughs/existing-database
无论如何,如果您想继续使用Scaffold-DbContext,我认为您可以不加注释DbContext的OnConfiguring方法,因为它正在检查optionsBuilder对象的IsConfigured属性,并且应该将此属性设置为true在启动类中配置连接时:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。