【问题标题】:Problem in creating database through code first approach通过代码优先方法创建数据库的问题
【发布时间】:2021-06-16 20:33:41
【问题描述】:

我正在使用 Visual Studio 2019 和 Microsoft SQL Server Management Studio 2018。我正在使用代码优先方法。我创建了Tri 类:

namespace WebApplication3Connection
{
    public class Tri
    {
        [Key]
        public string GradeName { get; set; }
        public string Section { get; set; }
    }
}

TriContext 类:

public class TriContext:DbContext
{
    public DbSet<Tri> Tris { get; set; }
}

现在在web.config 文件中添加连接字符串后

<connectionStrings>
    <add name="TriContext" 
         connectionString="server=DESKTOP-3V101I4\SQLEXPRESS;database=Tri;Integrated Security=true; Pooling=false; timeout = 2000;"  
         providerName="System.Data.SqlClient" />
</connectionStrings>

我的数据库没有被创建。虽然它应该在运行程序后自动创建。

【问题讨论】:

  • 您是否创建了迁移?如果没有,我会参考这篇文章docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/…。迁移过程将实际创建数据库,并在项目中插入一些迁移文件以跟踪对数据库的所有更改。
  • 应该自动创建 -- 取决于 EF 版本。
  • 在程序集“WebApplication3Connection”中找不到上下文类型。编写迁移时出现此错误

标签: asp.net linq entity


【解决方案1】:

您的数据库不会自动迁移,您需要对其进行编程或手动进行。更多信息:https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/

手动

在 Visual Studio 中打开包管理器控制台并执行以下命令:

add-migration MyMigrationName
update-database

以编程方式

您仍然需要在每次更改后手动创建迁移。

add-migration MyMigrationName

但是迁移可以通过编程方式完成。如果您有多个运行多个数据库的程序实例,这很有趣。或者有不同的生产和开发数据库,​​例如。

//startup.cs:    
public void Configure(TriContext triContext) {
  triContext.Database.Migrate();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多