如何设置多个项目的解决方案,一个项目是ASP.WebAPI(设置为启动项目),另一个是API.Data项目(只是标准类库)。
运行Add-Migration后出现以下错误
启动项目'API.Data‘目标框架’.NET标准‘。没有与此框架相关联的运行时,不能直接执行针对它的项目。若要在此项目中使用实体框架核心包管理器控制台工具,请添加引用此项目的可执行项目(针对.NET框架或.NET核心),并将其设置为启动项目;或将该项目更新为跨目标.NET框架或.NET核心。
我应该在Microsoft.EntityFrameworkCore项目中安装API.Data,还是在主启动项目中安装所有程序集?
我为Microsoft.EntityFrameworkCore项目安装了API.Data和Microsoft.EntityFrameworkCore.Design,主API.Data项目被设置为启动项目。
我知道这个错误:
您的启动项目'API‘不引用Microsoft.EntityFrameworkCore.Design。该软件包是实体框架核心工具工作所必需的。确保启动项目是正确的,安装软件包,然后再试一次。
如果我将启动项目更改为API.Data项目,则会得到以下错误:
启动项目'API.Data‘目标框架’.NET标准‘。没有与此框架相关联的运行时,不能直接执行针对它的项目。若要在此项目中使用实体框架核心包管理器控制台工具,请添加引用此项目的可执行项目(针对.NET框架或.NET核心),并将其设置为启动项目;或将该项目更新为跨目标.NET框架或.NET核心。
当我构建解决方案时,这些程序集为所有程序集生成警告:
Consider app.config remapping of assembly ...csproj文件:
发布于 2019-06-11 18:25:38
在Entity Framework Core 2.2+中
在包含DBContext的库项目(让我们称之为MyProject.Data)中,确保安装了这些包(您的版本可能有所不同,还可能需要将SqlServer更改为用于DB的任何内容):
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.6" />在我的Startup.cs中,我也指定了Migration Assembly,但我不认为这是必要的:
services.AddDbContext<MyDataContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
serverOptions => serverOptions.MigrationsAssembly(typeof(MyDataContext).Assembly.FullName));然后在Package Manager Console中,将目录更改为您的服务/启动项目,例如:
cd .\src\MyProject.Service然后取决于你想做什么,还在Package Manager Console里
添加迁移
dotnet ef migrations add MyMigrationName --startup-project ./ --project ../MyProject.Data/更新数据库
dotnet ef database update --startup-project ./ --project ../MyProject.Data/生成脚本(最后一次迁移)
dotnet ef migrations script --startup-project ./ --project ../MyProject.Data/发布于 2018-09-27 03:41:24
如果使用的是NetCore2.1,则需要安装命令行工具,然后检查是否可以执行dotnet ef。
如果您的实体在其他项目中,您仍然需要添加作为对主项目的引用,然后,run dotnet ef migrations add,从主项目中定义连接字符串,您可以添加-v以详细模式运行,这样就可以捕获更多错误。
例如,我们有我们的项目vtae.data,这个项目有一个名为context的文件夹,其中有两个上下文,core和stats,然后,我们有一个vtae.api项目,这是一个带有appsettings.json文件的ASPNET应用程序,它包含我们的连接字符串并导入vtae.data项目,所以,要使用EF,我们只需进入vtae.api项目的文件夹,然后在那里运行命令,比如
dotnet ef migrations add InitialCreate --context CoreContext -v发布于 2019-09-19 21:12:21
我在这里也有同样的问题,你就是这样解决的:
使用选项--startup-project=Path_to_Your_Executable_Project在CLI上运行此命令
这是因为您可能试图在一个与主可执行项目分离的classlib项目中运行这个命令。
https://stackoverflow.com/questions/52529002
复制相似问题