📜  Entity Framework-数据库设置(1)

📅  最后修改于: 2023-12-03 15:14:52.729000             🧑  作者: Mango

Entity Framework 数据库设置

Entity Framework 是 Microsoft 提供的一种 ORM (Object-Relational Mapping) 框架,它允许开发者使用面向对象的方式操作数据库。

在使用 Entity Framework 时,需要进行一些数据库设置,包括数据库连接字符串、数据库初始化策略以及数据库迁移等。

数据库连接字符串

数据库连接字符串是连接数据库的关键部分,它包括了数据库的地址、用户名和密码等信息。

在 Entity Framework 中,我们可以通过配置文件或者代码来设置数据库连接字符串。以下是使用配置文件设置数据库连接字符串的示例:

<connectionStrings>
    <add name="MyDbContext" providerName="System.Data.SqlClient" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;Integrated Security=True" />
</connectionStrings>

以上示例使用 SQL Server 数据库,连接字符串中的 Data Source 表示数据库的地址,Initial Catalog 表示数据库的名称,Integrated Security=True 表示使用 Windows 身份验证登录。

另外,我们也可以使用代码来设置数据库连接字符串,以下是示例代码:

var builder = new SqlConnectionStringBuilder();
builder.DataSource = ".";
builder.InitialCatalog = "MyDb";
builder.IntegratedSecurity = true;
var connectionString = builder.ToString();
数据库初始化策略

在使用 Entity Framework 时,我们需要对数据库进行初始化,以便创建表格、插入数据等操作。

Entity Framework 提供了多种数据库初始化策略,包括:

  • CreateDatabaseIfNotExists:如果数据库不存在,则创建数据库。
  • DropCreateDatabaseIfModelChanges:如果模型发生变化,则删除数据库并重新创建。
  • DropCreateDatabaseAlways:每次运行程序时都会删除数据库并重新创建。
  • MigrateDatabaseToLatestVersion:使用数据库迁移机制升级数据库。

我们可以通过在 DbContext 中覆盖 OnModelCreating 方法来设置初始化策略,例如:

public class MyDbContext : DbContext
{
    public MyDbContext(string connectionString) : base(connectionString)
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyDbContext>());
    }
}

以上示例使用了 DropCreateDatabaseIfModelChanges 初始化策略,如果模型发生变化,则会删除数据库并重新创建。

数据库迁移

当我们需要修改 Entity Framework 中的实体类时,需要对数据库进行迁移以便同步数据库结构。

Entity Framework 提供了良好的数据库迁移机制,例如使用 Add-Migration 命令生成迁移脚本,使用 Update-Database 命令应用迁移脚本等。以下是示例代码:

Add-Migration InitialCreate
Update-Database

以上示例使用了 InitialCreate 迁移脚本,表示创建初始数据库结构。Update-Database 命令会将迁移脚本应用到数据库中,以便同步数据库结构。

结论

在使用 Entity Framework 时,我们需要进行一些数据库设置,包括数据库连接字符串、数据库初始化策略以及数据库迁移等。Entity Framework 提供了方便的工具来管理数据库,使开发者能够更加专注于业务逻辑的实现。