【问题标题】:Issue on EF Core query: Method not foundEF Core 查询问题:找不到方法
【发布时间】:2018-04-04 09:21:32
【问题描述】:

我有 2 个 Web 项目(1 个 MVC 和 1 个 API),使用调用一些 EF Core 查询的同一个库(.Net Core 1.1)......每次我尝试从 MVC(.Net Core 1.1)获取数据时它工作正常,但是当我尝试从 API (.Net Core 2.0) 访问它时,我收到以下错误消息:

找不到方法:'Microsoft.EntityFrameworkCore.Metadata.Builders.ReferenceCollectionBuilder2<!0,!1> Microsoft.EntityFrameworkCore.Metadata.Builders.ReferenceCollectionBuilder2.OnDelete(Microsoft.EntityFrameworkCore.Metadata.DeleteBehavior)'。

我认为 .Net Core 版本不会影响这一点,因为查询是从同一个库调用的

有人知道如何帮助我吗?

【问题讨论】:

  • 我尝试了简单的查询,例如:_context.Materials.Count()
  • .NET Core 版本非常影响这一点,因为 EF Core 版本在某种程度上与此相关。您需要确保 EF 引用在这两种情况下都由最小公分母版本(即 EF 1.1,因为您有一个 .NET Core 1.1 项目在玩。特别是,如果您的 .NET Core 2.0项目引用 EF Core 2.0,然后在尝试访问类库时也会使用该引用,从而导致潜在的版本冲突。
  • 确实,您应该保持所有 .NET Core 版本相同。如果您还没有准备好将所有内容升级到 .NET Core 2.0,那么对于新项目坚持使用 .NET Core 1.1。否则,请继续更新以任何方式互连的所有内容,以使用最新的 .NET Core。在共享依赖项的同时尝试混搭会害死你。
  • 谢谢@ChrisPratt,虽然这不是我的错,我会尝试解决这个冲突,如果我不能,将所有内容更改为 .NET Core 1.1

标签: asp.net-mvc asp.net-core .net-core entity-framework-core


【解决方案1】:

这个问题的问题是您试图从 Dotnet core 2.2 调用 EF core 1.1。 我有同样的问题,我已经通过将所有内容更新到相同版本的 dotnet core 来解决。 就我而言,数据项目是在 ef core 1.1 上创建的,而 Web 项目是 2.0,我将数据项目和 Web 项目更新到相同的版本。 如果您不允许更新到最新的稳定版本(即 EF Core 2.2 和 .NET Core 2.2),那么至少坚持从同一版本调用 EF Core 项目。

【讨论】:

    猜你喜欢
    • 2020-03-29
    • 2020-09-27
    • 1970-01-01
    • 2020-04-11
    • 2021-03-19
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 2021-12-26
    相关资源
    最近更新 更多