【问题标题】:Strange linq exception on Visual Studio for MacVisual Studio for Mac 上的奇怪 linq 异常
【发布时间】:2019-11-08 20:22:15
【问题描述】:

我有一个非常古老的项目,它是用 Xamarin(现在的 Visual Studio for Mac)编写的。

该项目使用 mysql 数据库和实体框架。

当我尝试做一个非常基本的查询时

using (myentities db = myentities())
{
    customer.where(c => ... any filter ...)
}

我得到了这个例外:

System.MethodAccessException
Method `System.Data.DataView.get_RowPredicate()' is inaccessible from method `System.Data.LinqDataView.get_RowFilter()'

请注意 - 我也不例外,桌子是空的。 - 两年前在同一台计算机上完美运行!

有什么想法吗?

谢谢

【问题讨论】:

  • 这是构建错误还是运行时错误?
  • 不,这是运行时错误。我收到了一个 500 http 错误与此异常
  • 有没有升级.net平台或者mixin不兼容的包?
  • 我已经升级了所有东西:包和 .net 框架版本(最新)
  • Mono 最近升级了,只考虑了移动/Blazor 应用程序,因此如果您在 Mono 上处理 ASP.NET 4.x 项目,则可以预料到这种情况。 ASP.NET 4.x 项目应该转到 Visual Studio for Windows。或者将它们迁移到 ASP.NET Core。

标签: c# macos entity-framework xamarin


【解决方案1】:

LinqDataView 正在使用DataView(通过继承和使用RowPredicate of DataView

看起来LinqDataViewDataView 是不兼容的版本,因此 LinqDataView 调用的 DataView 在编译时具有 RowPredicate,但您使用的 DLL 中的 DataView 没有(可访问)行谓词

LinqDataView 在 System.Data.DataSetExtensions dll 中,DataView 在 System.Data dll 中。

因此 System.Data.DataSetExtensions dll 和 System.Data dll 之间存在不兼容性。

仔细检查这些 dll/包是否已正确更新/安装。 (也许还清除 obj/bin 文件夹并检查 .configs 的版本)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多