gpt4 book ai didi

c# - EntityFramework Core 2.0 - 添加迁移错误 "The EntityFramework package is not installed"

转载 作者:太空狗 更新时间:2023-10-29 21:01:03 24 4
gpt4 key购买 nike

我在尝试为 Entity Framework Core 添加迁移到 Code First 项目时遇到错误,这里是详细信息...

我创建了一个新的 ASP.Net Core Web 项目(VS 2017 中的 Core 2.0)。它使用 Microsoft.AspNetCore.All 依赖项,如下所示:

enter image description here

我希望利用 Entity Framework Core(我的理解是所有元数据都已经包含了 EF Core 依赖项,如下所示,看起来是正确的):

enter image description here

我已经设置了我的实体和上下文,并确保使用以下代码设置了数据库。

示例模型

public class City
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

[Required]
[MaxLength(50)]
public string Name { get; set; }

[MaxLength(200)]
public string Description { get; set; }
}

示例上下文

public class CityInfoContext : DbContext
{
public DbSet<City> Cities { get; set; }
public DbSet<PointOfInterest> PointsOfInterest { get; set; }

public CityInfoContext(DbContextOptions options) : base(options)
{
Database.EnsureCreated();
}
}

Startup.cs 配置

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddMvcOptions(options => {
options.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());
})
.AddJsonOptions(options => {
if (options.SerializerSettings.ContractResolver != null)
{
var res = options.SerializerSettings.ContractResolver as DefaultContractResolver;
res.NamingStrategy = null;
}
});

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddSingleton<IMailService, LocalMailService>();

// Entity Framework services.
var connectionString = @"Server=(localdb)\mssqllocaldb;Database=CityInfoDB;Trusted_Connection=True;";
services.AddDbContext<CityInfoContext>(options => options.UseSqlServer(connectionString));
}

在我的 Controller 中使用此行初始化 dB 上下文:

public class DummyController: Controller
{
CityInfoContext _ctx;

public DummyController(CityInfoContext ctx)
{
_ctx = ctx;
}
}

我可以看到数据库已成功创建 - 到目前为止一切正常。

enter image description here

我想使用以下命令拍摄我的数据库的快照:PM> 添加迁移 CityInfoInitialMigration

但是得到错误:EntityFramework 包未安装在项目“CityInfo.API”上。

enter image description here

有没有人遇到过这个?我明确尝试添加 EF 包,但这也不起作用!

最佳答案

NPM> Get-Module

如果结果包含EntityFramework

ModuleType Version    Name                                ExportedCommands                                                                                                                                                                                         
---------- ------- ---- ----------------
Script 6.0.0.0 EntityFramework {Add- EFDefaultConnectionFactory, Add-EFProvider, Add-Migration, Enable-Migrations...}
Script 2.0.0 EntityFrameworkCore {Add-Migration, Drop-Database, Enable-Migrations, Get-DbContext...}
Script 2.0.0.0 NuGet {Add-BindingRedirect, Find-Package, Get-Package, Get-Project...}
Script 0.0 profile

意味着 EntityFrameworkCoreEntityFramework Nuget 包都安装在一个项目中,这会导致

The EntityFramework package is not installed

在我的例子中,我引用了一些引用 EntityFramework 6.0.0 的 Nuget 包(因此 EntityFramework 包被间接引用)。删除该包后,错误已修复。

找到此类引用的最简单方法是使用Search Solution Explorer 对话框

enter image description here

关于c# - EntityFramework Core 2.0 - 添加迁移错误 "The EntityFramework package is not installed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46320052/

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