当使用Entity Framework Core (EF Core) 来开发应用的时候,我们经常需要创建数据库。在基于EF Core的开发中,我们可以通过数据模型(Model)来创建数据库。
下面是详细的操作步骤:
1.创建ASP.NET Core Web应用
首先创建一个名为“EFCoreDemo”的ASP.NET Core Web应用。可以通过使用Visual Studio的“新建项目”向导来方便地创建。选择.NET Core 和ASP.NET Core Web应用程序模板。确保选择针对EF Core的“Web应用程序(Model-View-Controller)”模板,这样Visual Studio会自动添加.NET Core和EF Core所需的NuGet软件包。
2.定义数据模型
接下来,在“Models”文件夹下创建一个新类,命名为“Product.cs”。此类表示“产品”实体。
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
}
在这个数据模型代码中,我们定义了一个表示产品的类Product,该类包含四个属性:整数类型的Id、字符串类型的Name和Description,以及十进制数类型的Price。假设这个数据模型类是需要按照这个模型创建数据库的。
3.创建数据库上下文
EF Core无法处理数据库连接。它需要一个表示数据库连接的上下文。为此我们需要创建一个类,命名为“AppDbContext.cs”,该类必须继承于“DbContext”类。我们还需要在构造函数中调用父类DbContext的构造函数,指定应用程序配置中的数据库连接字符串。
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options)
: base(options)
{
}
public DbSet<Product> Products { get; set; }
}
在这个类中,我们定义了一个表示数据库上下文的类AppDbContext。构造函数需要一个 DbContextOptions< AppDbContext >,它是通过配置应用程序中的数据库连接字符串来传递的。我们还以泛型类型 DbSet< Product > 来定义了一个属性,该属性用于在数据库中表示我们的Product模型。
4.注册数据库上下文服务
我们现在需要使用ASP.NET Core的依赖注入(Dependency Injection (DI))引擎注册AppDbContext服务。我们可以将其添加到 Startup.cs 文件中的 ConfigureServices 方法。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
var connection = "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;ConnectRetryCount=0";
services.AddDbContext<AppDbContext>(options => options.UseSqlServer(connection));
}
以上代码中,我们使用连接字符串将AppDbContext服务添加到DI引擎中,此字符串指的是用于存储数据的数据库。该字符串是SQL Server上的本地SQL Server实例。
5.添加数据库迁移
可以使用此步骤来创建数据库架构(包括表、列等以及相应的约束),以便与我们的数据模型一起使用。使用EF Core的重要功能之一是“迁移”(Migrations)。迁移是描述数据模型的代码,它描述了数据模型的变更,以及如何将数据库结构保持与新模型相匹配。
在命令行工具中,运行以下命令:
dotnet ef migrations add InitialCreate
以上命令将为我们添加一个名为“InitialCreate”的迁移。
6.对数据库应用迁移
接下来,使用以下命令来对数据库应用迁移:
dotnet ef database update
此时,EF Core将根据模型的定义和已经应用的迁移更新数据库中的架构。
现在,我们已经完成了使用EF Core基于数据模型创建数据库的完整攻略,下面展示两个具体示例。
示例1:
在上面的模型代码中添加一个新属性,如下:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public DateTime LastUpdated { get; set; }
}
接下来,我们需要在 Startup.cs 中运行以下命令来创建一个新的数据库迁移:
dotnet ef migrations add AddLastUpdated
最后,应用这个新的迁移,以将LastUpdated属性添加到数据库中:
dotnet ef database update
示例2:
在AppDbContext中添加一个新DbSet属性,如下所示:
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options)
: base(options)
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
}
运行以下迁移命令:
dotnet ef migrations add AddCategoryTable
这将创建一个新的迁移并在模型上下文中增加一个Category实体。
接下来,使用命令更新数据库:
dotnet ef database update
最后,我们成功地将新增的Category实体添加到了数据库中。
需要注意的是,在最终部署这个应用程序之前,必须使用迁移操作将架构应用到所有目标数据库。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Entity Framework Core基于数据模型创建数据库 - Python技术站