当前位置:首页 > 问答 > 正文

EF Core 数据库连接配置详解,轻松用ef框架代码实现数据库连接

🚀 EF Core | 数据库连接配置详解:轻松用EF框架代码实现数据库连接

场景引入:当代码遇上数据库

想象一下这个场景:你正在开发一个电商网站🛒,产品数据、用户信息、订单记录都需要存储,手动写SQL语句?太麻烦了!这时候EF Core就像你的私人数据库管家🤵,帮你优雅地处理所有数据操作。

我们就来深入聊聊如何用EF Core配置数据库连接,让你从此告别繁琐的SQL拼接!✨


🔧 1. 安装EF Core基础包

确保你的项目已经安装了必要的NuGet包:

dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.Design

根据你要连接的数据库类型,还需要安装对应的数据库提供程序:

EF Core 数据库连接配置详解,轻松用ef框架代码实现数据库连接

# SQL Server
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
# MySQL
dotnet add package Pomelo.EntityFrameworkCore.MySql
# PostgreSQL
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
# SQLite
dotnet add package Microsoft.EntityFrameworkCore.Sqlite

🛠️ 2. 配置数据库连接字符串

连接字符串是EF Core连接数据库的"钥匙"🔑,通常包含服务器地址、数据库名、认证信息等。

1 硬编码方式(仅用于测试)

var connectionString = "Server=localhost;Database=MyShop;User Id=sa;Password=123456;";

⚠️ 注意:实际项目中千万不要这样写!密码等敏感信息应该使用安全方式存储。

2 推荐方式:使用appsettings.json

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=MyShop;User Id=sa;Password=123456;"
  }
}

然后在代码中读取:

var configuration = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json")
    .Build();
var connectionString = configuration.GetConnectionString("DefaultConnection");

🏗️ 3. 创建DbContext

DbContext是EF Core的核心,代表与数据库的会话。

EF Core 数据库连接配置详解,轻松用ef框架代码实现数据库连接

public class ShopDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }
    public DbSet<Customer> Customers { get; set; }
    public DbSet<Order> Orders { get; set; }
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseSqlServer(connectionString);
        }
    }
}

💡 小技巧:实际项目中,建议使用依赖注入来配置DbContext,而不是在OnConfiguring中硬编码。


🌈 4. 不同数据库的配置方式

EF Core支持多种数据库,配置方式略有不同:

1 SQL Server

services.AddDbContext<ShopDbContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

2 MySQL (使用Pomelo提供程序)

services.AddDbContext<ShopDbContext>(options =>
    options.UseMySql(Configuration.GetConnectionString("DefaultConnection"), 
    new MySqlServerVersion(new Version(8, 0, 26))));

3 PostgreSQL

services.AddDbContext<ShopDbContext>(options =>
    options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection")));

4 SQLite

services.AddDbContext<ShopDbContext>(options =>
    options.UseSqlite("Data Source=myshop.db"));

🔍 5. 高级连接配置

1 连接重试策略

services.AddDbContext<ShopDbContext>(options =>
    options.UseSqlServer(
        Configuration.GetConnectionString("DefaultConnection"),
        sqlServerOptions => sqlServerOptions.EnableRetryOnFailure(
            maxRetryCount: 5,
            maxRetryDelay: TimeSpan.FromSeconds(30),
            errorNumbersToAdd: null)));

2 连接池配置

services.AddDbContextPool<ShopDbContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")),
    poolSize: 128);

3 敏感数据日志记录

optionsBuilder.UseSqlServer(connectionString)
    .EnableSensitiveDataLogging()
    .LogTo(Console.WriteLine, LogLevel.Information);

🧪 6. 测试你的连接

配置完成后,可以通过简单代码测试连接是否正常:

using (var db = new ShopDbContext())
{
    if (db.Database.CanConnect())
    {
        Console.WriteLine("🎉 数据库连接成功!");
    }
    else
    {
        Console.WriteLine("❌ 无法连接到数据库");
    }
}

🚨 7. 常见问题排查

  1. 连接失败:检查连接字符串、网络、防火墙设置
  2. 认证错误:确认用户名密码正确,检查SQL Server的认证模式
  3. 版本不匹配:确保EF Core和数据库提供程序版本兼容
  4. 迁移问题:如果修改了模型,记得运行dotnet ef migrations adddotnet ef database update

🎯 8. 最佳实践

  1. 永远不要硬编码连接字符串 - 使用配置系统或密钥管理服务
  2. 使用依赖注入 - 让框架管理DbContext生命周期
  3. 考虑连接池 - 高并发应用需要合理配置连接池大小
  4. 实现健康检查 - 监控数据库连接状态
  5. 环境区分 - 开发、测试、生产环境使用不同连接配置

现在你已经掌握了EF Core数据库连接配置的精髓!从简单的SQLite到企业级SQL Server集群,EF Core都能优雅应对,好的开始是成功的一半,正确的数据库连接配置是你数据访问层稳固的基石。

EF Core 数据库连接配置详解,轻松用ef框架代码实现数据库连接

下次当你看到EF Core流畅地处理数据时,不妨给自己点个赞👍 - 因为你已经知道这背后的魔法是如何工作的了!

发表评论