c# – 构建存储库时的实体框架核心工具

我正在尝试在数据存储库中使用Entity Framework Core,但是我很难让EF创建数据库.

在EF的先前版本中,它全部自动发生,如果在第一次尝试对数据执行任何操作时不存在,则EF创建数据库.

现在,我在文档中似乎有使用EF迁移的指令.说明是安装依赖项和工具:

> Microsoft.EntityFrameworkCore.Design
> Microsoft.EntityFrameworkCore.Tools

要运行dotnet ef迁移,请将MigrationName与dotnet ef数据库更新一起添加.

现在来了.当我正在构建一个存储库时,我有一个项目AppName.Data,其中存储库被实现,一个项目AppName.WebApi,其中存储库被使用.

如果我尝试添加工具并从AppName.Data运行dotnet ef它不起作用,因为AppName.Data是一个库.错误消息表明该工具只能在一个可执行应用程序的上下文中使用.

接下来的尝试是从AppName.WebApi运行dotnet ef,这是可执行的.现在dotnet ef工作但是如果我尝试使用dotnet ef迁移添加InitialMigration来创建数据库我得到一个错误,因为DbContext不在AppName.WebApi项目上,而是在另一个项目上.

我真的不知道该怎么做.因此,如果我希望EF创建数据库和所有这些,并且我想使用存储库,那么可执行项目上没有EF特定代码,我该怎么办?

最佳答案 在搜索之后,我在
the docs上发现了“预览2已知问题”,这是目前工具的限制.它确实需要一个可执行的应用程序项目才能运行,因为它需要使用dotnet运行.

文档还提供了解决方法.我首选的并且对我有用的是第一个解决方法.我们只是指向一个可执行的应用程序项目,它通过项目的路径传递–startup-project.

所以不要跑步

dotnet ef migrations add MigrationName

我们跑

dotnet ef --startup-project pathToProject migrations add MigrationName

一切都按预期工作.

点赞