el_*_*_le 6 c# visual-studio nuget entity-framework-core
我的解决方案中有2个项目,有一个安装了Entity Framework Core的项目:
在另一个ASP.NET Web API项目中,我具有以下软件包:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Antlr" version="3.5.0.2" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights" version="2.5.1" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.4.0" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.5.1" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.5.1" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.Web" version="2.5.1" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.WindowsServer" version="2.5.1" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.5.1" targetFramework="net461" />
<package id="Microsoft.AspNet.Mvc" version="5.2.4" targetFramework="net461" />
<package id="Microsoft.AspNet.Razor" version="3.2.4" targetFramework="net461" />
<package id="Microsoft.AspNet.TelemetryCorrelation" version="1.0.0" targetFramework="net461" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net461" />
<package id="Microsoft.AspNet.WebApi" version="5.2.4" targetFramework="net461" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.4" targetFramework="net461" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.4" targetFramework="net461" />
<package id="Microsoft.AspNet.WebApi.HelpPage" version="5.2.4" targetFramework="net461" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.4" targetFramework="net461" />
<package id="Microsoft.AspNet.WebPages" version="3.2.4" targetFramework="net461" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.0" targetFramework="net461" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net461" />
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net461" />
<package id="System.Diagnostics.DiagnosticSource" version="4.4.1" targetFramework="net461" />
<package id="WebGrease" version="1.6.0" targetFramework="net461" />
</packages>
Run Code Online (Sandbox Code Playgroud)
当我Add-Migration在PMC中运行时:
您的启动项目“ API”未引用Microsoft.EntityFrameworkCore.Design。该软件包是实体框架核心工具运行所必需的。确保您的启动项目正确,安装软件包,然后重试。
我在启动项目中而不是将包含所有实体的数据项目中安装了Microsoft.EntityFrameworkCore.Design,现在它可以工作了,这是应该如何设置项目?
ast*_*ker 65
我在这里找到了解决方案。
简而言之,编辑您的 csproj 文件,并将PropertyGroup以下条目添加到您的部分:
<GenerateRuntimeConfigurationFiles>True</GenerateRuntimeConfigurationFiles>
Run Code Online (Sandbox Code Playgroud)
thu*_*hus 35
没有一个选项对我有用。但是我在这个主题上尝试过的一个工作: EF Core 3 design time migrations breaked by Microsoft.EntityFrameworkCore.Design DevelopmentDependency
在将包导入到 Data 项目后,我刚刚注释掉了以下内容:
<ItemGroup>
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.1.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.5">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<!--<PrivateAssets>all</PrivateAssets>-->
</PackageReference>
Run Code Online (Sandbox Code Playgroud)
非常感谢 Microsoft 每次发布新的 .NetCore 更新时都会破坏现有项目!
viv*_*una 25
你有多个项目吗?如果是,那么您必须将宿主项目作为解决方案资源管理器中的启动项目,并将该项目设置为 PMC 中的默认项目(哪个项目具有 DBContext)。然后运行Add-Migration命令。
小智 24
“您的‘项目名称’不是指您的启动项目 Microsoft.EntityFrameworkCore.Design。此包是 Entity Framework Core Tools 工作所必需的。请确保您的启动项目正确,安装该包并重试。”
如果您收到此错误,请在您的项目中尝试“构建 > 清理解决方案”,然后再次尝试运行您的命令。
这在我的项目中有效。或者您可能想查看文档。
我在我的项目中使用 .Net Core 3.1 版本。
小智 20
请确保您已安装以下软件包。我也遇到了同样的错误并安装在包下面,它对我有用。
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Tools
Run Code Online (Sandbox Code Playgroud)
And*_*nov 11
绝对没有理由在拥有单独的数据项目的同时将 Microsoft.EntityFrameworkCore.Design 安装到您的 API 项目中。
使用 add-migration 时,只需添加一个参数即可将 -StartUpProject 设置为您的 Data proj(默认情况下,我假设您的启动项目是 API proj)。
下面的添加迁移命令示例:
add-migration {migration_name} -StartUpProject {your_data_proj_name} -project {your_data_proj_name} -v
Run Code Online (Sandbox Code Playgroud)
下面的示例更新数据库命令:
update-database -StartUpProject {your_data_proj_name} -project {your_data_proj_name} -v
Run Code Online (Sandbox Code Playgroud)
我希望这对你们有帮助
PS:有关添加迁移参数的更多信息可以在这里找到
我收到此错误是因为 Visual Studio 默认使用实体框架核心而不是旧式实体框架用于 .NET 框架:实体框架 6。这是我的解决方案:
EntityFramework\Update-Database
Run Code Online (Sandbox Code Playgroud)
或者明确引用版本:
EntityFramework6\Update-Database
Run Code Online (Sandbox Code Playgroud)
同样值得检查在包管理器控制台中选择了正确的项目。那个喜欢偷偷溜回其他项目的一半时间!
小智 7
您可以使用以下命令解决此问题
dotnet tool install --global dotnet-ef
dotnet add package Microsoft.EntityFrameworkCore.Design
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您想在不向服务中添加 EF 引用的情况下进行迁移,则具有数据访问权限的库需要一种构建 DbContext 实例的方法。您可以通过实现 IDesignTimeDbContextFactory 来做到这一点,例如:
public class MyContextFactory : IDesignTimeDbContextFactory<MyContext>
{
public MyContext CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder<MyContext>();
optionsBuilder.UseSqlServer("Data Source=MyDatabase");
return new MyContext(optionsBuilder.Options);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9171 次 |
| 最近记录: |