gpt4 book ai didi

c# - Entity Framework Core 命令在 Nuget PM 中无法识别

转载 作者:行者123 更新时间:2023-11-30 23:09:33 24 4
gpt4 key购买 nike

我们在项目中同时使用了 EF6 和 EF Core。我有其他团队成员创建的迁移。我想使用下一个命令更新数据库:

EntityFrameworkCore\更新数据库

但是出现了下一个错误:

EntityFrameworkCore\Update-Database : The module 'EntityFrameworkCore' could not be loaded. For more information, run 'Import-Module EntityFrameworkCore'.
At line:1 char:1
+ EntityFrameworkCore\Update-Database
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (EntityFrameworkCore\Update-Database:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CouldNotAutoLoadModule

它写道,无法加载 EF Core 模块,但它在项目包文件夹中,我检查了它。

Import-Module EntityFrameworkCore 命令执行结果:

Import-Module : The specified module 'EntityFrameworkCore' was not loaded because no valid module file was found in any module directory.
At line:1 char:1
+ Import-Module EntityFrameworkCore
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (EntityFrameworkCore:String) [Import-Module], FileNotFoundException
+ FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand

我不不明白为什么我现在不能使用它,以及为什么 NPM 不能 fine EF Core 模块。

csproj 文件中提到了这个包:

<ItemGroup>
<PackageReference Include="AutoMapper" Version="6.1.1" />
<PackageReference Include="EntityFramework" Version="6.1.3" />
<PackageReference Include="IdentityServer4" Version="1.5.2" />
<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="1.2.1" />
<PackageReference Include="IdentityServer4.AspNetIdentity" Version="1.0.1" />
<PackageReference Include="IdentityServer4.EntityFramework" Version="1.0.1" />
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.1.1" />
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Authentication" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="1.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational.Design" Version="1.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
<PackageReference Include="System.Linq.Dynamic" Version="1.0.7" />
</ItemGroup>

有人可以告诉我,我做错了什么吗?没有 EntityFrameworkCore 前缀的更新数据库被识别。 .Net Framework 4.6.2

最佳答案

我遇到了同样的问题,我不得不改变工作方式。我把这个食谱写给我的 friend 们,希望对你有帮助:

1st.- 如何添加迁移:

Go to the project folder and type:
dotnet ef migrations add [NameOFYourMigrationGoesHere] -c YourContext

注意:不要忘记将创建的文件添加到源代码管理,这不是自动完成的

2nd.- 如何更新您的数据库: 2.a.- 在 docker -> 您可以运行项目(完全使用 Docker)并且迁移将在第一次使用 Context 时应用。 注意:(它将使用为该环境配置的连接字符串)

2.b.- 您的本地数据库 -> 编辑 ConfigurationContext.OnConfigure 中硬编码的连接字符串并运行:

dotnet ef 数据库更新 --context ConfigurationContext

从头开始复制这个的步骤:

Migration Commands在.Net Core中有了很大的改变我建议访问: https://learn.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

1st.- 您必须将这些行添加到 .csproj:

<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.1" />
</ItemGroup>

注意:版本可能会改变

2nd.- 在您的项目中创建一个上下文,如下所示:

公共(public)类 YourContext : DbContext{ #region 构造函数

public YourContext()
{
}

public YourContext(DbContextOptions options) : base(options)
{

}

#endregion Constructors

#region DbSets
#endregion DbSets

#region OnConfiguring
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
// In order to be able to create migrations and update database:
if (!options.IsConfigured)
{
options.UseSqlServer("YourLocalConnectionStringShouldBeHere");
}
base.OnConfiguring(options);
}
#endregion

#region Model Creating

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// Your Model Crerating Stuff
}

#endregion Model Creating

3rd.- 为什么不根据上述步骤创建“初始”迁移??

编码愉快!

希望对你有帮助。

胡安

编辑:

此外,这里真正的问题是存在不同的 EF“风格”。只需转到 EF 根文档并查看差异:

https://learn.microsoft.com/en-us/ef/

EF 6 迁移命令:https://dzone.com/articles/ef-migrations-command

EF Core 迁移命令:https://learn.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations

现在我的回答对我来说似乎是完整的。我希望这能为你们节省时间。

关于c# - Entity Framework Core 命令在 Nuget PM 中无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45751975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com