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

该项目适用于mysql数据库和entityframework。

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

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()'


请注意
  -我也不例外,表是空的。
  -2年前在同一台计算机上运行良好!

任何的想法 ?

谢谢

最佳答案

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

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

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

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

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

关于c# - Mac上的Visual Studio上的奇怪Linq异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56780417/

10-12 17:26