当我调试以下代码System.TypeLoadException
时,我在执行Delete()
.
Using db As New ScholarshipEntities
db.ApplicationHistories.Where(Function(h) h.HistoryTypeId = 0).Delete()
db.SaveChanges()
End Using
我在 Visual Studio 2013 中使用 EF 6.1。我还安装了 EntityFramework.Extended 库。
我可以毫无问题地查询结果。我认为当Where
方法没有结果时可能会出现错误,但事实并非如此。我添加新模型(.edmx)也没有问题,这是一些有这个例外的人遇到的问题。
我刚刚升级到 EF 6.1 并安装了扩展库。这是我第一次使用其中一种扩展方法。我已经卸载并重新安装了 nuget 包,但没有成功。
IntelliTrace 显示Delete()
调用中的以下异常(按顺序):
'EntityFramework.Reflection.DynamicProxy' does not contain a definition for 'InternalQuery'
Cannot implicitly convert type 'EntityFramework.Reflection.DynamicProxy' to 'System.Data.Entity.Core.Objects.ObjectQuery<Scholarship.ApplicationHistory>'
Could not load type 'System.Data.Entity.Core.Mapping.EntityContainerMapping'
我在扩展库的 github 上添加了一个问题。
更新
我重新安装了 EF 和 EF.Extended 库,但没有成功。我可以RemoveRange
在它的位置使用。我能够创建一个新项目,安装包,添加映射到同一数据库的模型,并成功使用Delete
. 显然,问题出在我目前的解决方案中。
在我的解决方案中,我有一个 ASP.NET 项目和一个常规库项目。在 ASP 项目中,页面背后的代码调用库中的方法RemoveHistory
。该库包含用于业务逻辑和数据访问的类。这两个类都实现了接口。实际Delete
发生在数据访问类中。我的模型也位于这个库项目中。
我也许可以创建一个全新的项目并将所有内容都带过来,但这需要相当长的时间。即使我这样做了,我也想首先了解为什么它不起作用,这样我就不必重复这个过程。