EF Core 在 Azure Functions 中不能直接注入 DbContext,因其非线程安全且不支持跨调用复用;应每次执行时用 using 创建并及时释放实例,避免静态/单例缓存。
EF Core 可以在 Azure Functions 中使用,但要注意生命周期和连接管理——它不能像在 ASP.NET Core 那样自动注册为 Scoped 服务,必须手动控制 DbContext 实例的创建与释放,避免连接泄漏或并发问题。
Azure Functions 默认是无状态、短生命周期的执行模型,而 EF Core 的 DbContext 不是线程安全的,也不适合跨函数调用复用。若在静态上下文或单例中缓存 DbContext,会导致异常或数据不一致。
享冲突)在函数方法体内新建 DbContext,并通过 Cosmos DB 提供程序(或其他目标数据库)配置连接字符串。适用于 HTTP 触发器、队列触发器等常见场景。
对于仅写入 Cosmos DB 的场景,可跳过 EF Core,改用 Azure Functions 原生的 Cosmos DB 输出绑定——无需写 DbContext 代码,只需定义 POCO 类,绑定会自动序列化为 JSON 并存入容器。
可通过扩展 Functions 的启动逻辑(如实现 IWebJobsStartup),注册 EF Core 服务并启用作用域。但要注意:
基本上就这些。核心就一条:别让 DbContext 活过单次函数执行。用完即弃,干净利落。