到处都说要调用services.AddDbContext<>方法,但在ConfigureServices(IServiceCollection services)方法中无法识别它。
我做错了什么?
到处都说要调用services.AddDbContext<>方法,但在ConfigureServices(IServiceCollection services)方法中无法识别它。
我做错了什么?
首先,您需要引用正确的包,具体取决于您想要使用的EF Core提供程序。
对于SQL Server,请使用Microsoft.EntityFrameworkCore.SqlServer
,对于SQLite,请使用Microsoft.EntityFrameworkCore.Sqlite
,对于内存(仅用于测试),请使用Microsoft.EntityFrameworkCore.InMemory
。
这些都是官方开箱即用的提供程序。还有第三方提供程序,例如PostgreSQL、MySQL等。文档在此处提供了可用的第三方提供者列表。
此外,根据提供程序的不同,您可能还需要声明特定的命名空间。内置提供程序在Microsoft.Extension.DependencyInjection
命名空间中声明,因此您需要在Startup.cs
的顶部添加using Microsoft.Extension.DependencyInjection;
。
其他提供程序(例如Oracle的MySQL提供程序)使用MySQL.Data.EntityFrameworkCore.Extensions
命名空间,因此您需要使用using MySQL.Data.EntityFrameworkCore.Extensions;
来定义它。
在实际编写using
时,请注意只需引用Microsoft.EntityFrameworkCore
,省略特定的包名称。如果提供它似乎会引发错误。
DbContext
(因此需要 AddDbContext),那么您正在使用 EF。Dapper与EF完全无关,它基于IDbConnection
并且不使用DbContext
。 - Tseng