找不到方法:'System.Object Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable.get_Item(System.Strin

Posted

技术标签:

【中文标题】找不到方法:\'System.Object Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable.get_Item(System.String)\'【英文标题】:Method not found: 'System.Object Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable.get_Item(System.String)'找不到方法:'System.Object Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable.get_Item(System.String)' 【发布时间】:2021-06-17 20:02:44 【问题描述】:

我正在使用 C#,我想 Add-Migration InitialVersion 但有一个问题:

Method not found: 'System.Object Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable.get_Item(System.String)'

我使用的 Nuget 包:

<Project Sdk="Microsoft.NET.Sdk">

 <PropertyGroup>
   <TargetFramework>net5.0</TargetFramework>
 </PropertyGroup>

 <ItemGroup>
   <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0-preview.2.21154.2" />
   <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.0-preview.2.21154.2">
     <PrivateAssets>all</PrivateAssets>
     <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
   </PackageReference>
   <PackageReference Include="Pomelo.EntityFrameworkCore.mysql" Version="5.0.0-alpha.2" />
 </ItemGroup>

</Project>

【问题讨论】:

【参考方案1】:

Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.Tools 降级到最新的5th 版本。您可以通过 dotnet CLI 使用下一个命令来完成:

dotnet add package Microsoft.EntityFrameworkCore --version 5.0.4
dotnet add package Microsoft.EntityFrameworkCore.Tools --version 5.0.4

Indexer accepting string 已从 IAnnotatable 中的 6th preview version 中删除。

【讨论】:

@TheRain 清理 binobj 文件夹,重新构建,检查构建输出目录是否包含正确版本的 Microsoft.EntityFrameworkCore 包。 但这会导致兼容性错误,不是吗? @TheRain 您的原始错误是兼容性错误。 Pomelo.EntityFrameworkCore.MySql 5.0.0-alpha.2 依赖于 EF Core 的第 5 版,但似乎它们允许使用更高版本,并且第 6 预览版有一个重大更改(索引器已删除)。【参考方案2】:

另一种选择是将 dotnet-ef 更新为与项目中相同的版本

dotnet tool update --global dotnet-ef --version 6.0.0-preview.2.21154.2

【讨论】:

以上是关于找不到方法:'System.Object Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable.get_Item(System.Strin的主要内容,如果未能解决你的问题,请参考以下文章

未定义或导入 C# 预定义类型“System.Object”

vs找不到数据库服务器

找不到引用microsoft.office.core解决办法 via mrcjiong

无法将类型“System.Nullable`1”强制转换为类型“System.Object”。LINQ to Entities 仅支持强制转换 EDM 基元或枚举类型。

asp.ner core 6.0路由找不到

LINQ to Entities 无法识别方法“System.String Format(System.String, System.Object, System.Object)”