I ran into an entity framework issue where I received the following exception on an update controller method. I was attempting to use the Find
and/or FindAsync
methods on a DbSet
to locate a single record by it's key value. The problem was that I passed the wrong type into Find
. With an int
key table Find
expects that an int
be passed but instead I passed it an object with an int property which it correctly complained about being an anonymous type of int.
C#
this.DbSet.FindAsync(new { id });
It should be noted, this exception will occur anytime there is a data type mismatch (e.g. if you have a string or guid key but pass an int, expect this error). There are scenarios where you can pass in an anonymous type but alas this was not one of them.
Exception
The key value at position 0 of the call to 'DbSet<T>.Find' was of type '<>f__AnonymousType0<int>', which does not match the property type of 'int'.
C#
// Correct
var record = await this.DbSet.FindAsync(id);
// Incorrent
var record = await this.DbSet.FindAsync(new { id });