Visual Studio for Mac 上的奇怪 linq 异常
Posted
技术标签:
【中文标题】Visual Studio for Mac 上的奇怪 linq 异常【英文标题】:Strange linq exception on Visual Studio for Mac 【发布时间】: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。 【参考方案1】:LinqDataView
正在使用DataView
(通过继承和使用RowPredicate
of DataView
)
看起来LinqDataView
和DataView
是不兼容的版本,因此 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 的版本)
【讨论】:
以上是关于Visual Studio for Mac 上的奇怪 linq 异常的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio for Mac 2017预览版 初体验
Visual Studio 2017 for Mac 体验之Android.Form