找不到方法:'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.EntityFrameworkCore
和Microsoft.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 清理bin
和 obj
文件夹,重新构建,检查构建输出目录是否包含正确版本的 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”
找不到引用microsoft.office.core解决办法 via mrcjiong
无法将类型“System.Nullable`1”强制转换为类型“System.Object”。LINQ to Entities 仅支持强制转换 EDM 基元或枚举类型。
LINQ to Entities 无法识别方法“System.String Format(System.String, System.Object, System.Object)”