Question

When I debug the following code, I receive the message "System.TypeLoadException was caught" when I perform the Delete().

Using db As New ScholarshipEntities

    db.ApplicationHistories.Where(Function(h) h.HistoryTypeId = 0).Delete()
    db.SaveChanges()

End Using

I am using EF 6.1 in Visual Studio 2013. I also have the EntityFramework.Extended library installed.

I have no trouble querying results. I thought the bug might occur when the Where method has no results, but that is not the case. I also have no problem adding new models (.edmx), which was a problem some people with this exception had.

I just recently upgraded to EF 6.1 and installed the Extended library. This is my first time using one of the extended methods. I've un-installed and re-installed the nuget packages with no success.

IntelliTrace shows the following exceptions from the Delete() call (in order):

  • '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'

I've added an issue on the Extended library's github.

Update I've reinstalled EF and the EF.Extended library with no luck. I am able to use RemoveRange in its place. I am able to create a new project, install the packages, add a model mapped to the same database, and successfully use Delete. Obviously, the problem is in my current solution.

In my solution, I have an ASP.NET project and a regular library project. In the ASP project, a page's code behind calls a method in the library RemoveHistory. The library contains classes for the business logic and data access. Both classes implement interfaces. The actual Delete occurs in the data access class. My model also resides in this library project.

I may be able to create a completely new project and bring everything over, but that will take quite some time. Even if I did, I want to understand why it doesn't work in the first place, so that I don't have to repeat this process.

Was it helpful?

Solution 2

I "solved" the issue some time ago. I'll eventually go back to try and reproduce the problem to confirm my suspicions.

There were multiple versions of Entity Framework installed in the solution. This didn't appear to affect basic EF functionality, though I'm sure it did in some subtle, potentially buggy fashion.

Every time the solution was opened, NuGet would state that it couldn't complete uninstallation. Uninstalling and restoring via NuGet was unsuccessful, and the packages had to be deleted manually. Once completely removed, I installed the packages again. This resolved the issue.

I wish I could give a more technical answer, though the basic reason was forgetting to look closer at the packages folder and configuration.

OTHER TIPS

If you want to delete certain rows do it like that:

Using db As New ScholarshipEntities

  db.ApplicationHistories.RemoveRange(db.ApplicationHistories.Where(Function(h) h.HistoryTypeId = 0))
  db.SaveChanges()

End Using

If you want to remove single entity do it like that:

Using db As New ScholarshipEntities

  db.ApplicationHistories.Remove(db.ApplicationHistories.Single(Function(h) h.HistoryTypeId = 0))
  db.SaveChanges()

End Using
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top