".AddDbContext方法在哪里?"

10

到处都说要调用services.AddDbContext<>方法,但在ConfigureServices(IServiceCollection services)方法中无法识别它。
我做错了什么?

2个回答

18

首先,您需要引用正确的包,具体取决于您想要使用的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;来定义它。


因此,即使不使用EF,利用EF的一部分也是必要的吗?我想使用Dapper,那么我是否仍然应该使用这个依赖项? - Michael Bowman
如果您正在使用 DbContext(因此需要 AddDbContext),那么您正在使用 EF。Dapper与EF完全无关,它基于 IDbConnection 并且不使用 DbContext - Tseng
是的,我在写完之后不久就明白了。我没有想要和你一起橡皮鸭 - 感谢您的回复! - Michael Bowman

0

在实际编写using时,请注意只需引用Microsoft.EntityFrameworkCore,省略特定的包名称。如果提供它似乎会引发错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接