When you override Equals, EF can't translate your custom Equals logic into SQL. Here are three recommended approaches:
1.If your Equals method is based on Name, you can directly compare that property :
Istituto? istituto = await context.Istituti.FirstOrDefaultAsync(e => e.Name == resource.Name);
2.Use AsEnumerable() to handle it in memory, but this is inefficient for large datasets :
Istituto? istituto = context.Istituti.AsEnumerable().FirstOrDefault(e => e.Equals(resource));
3.Create a custom extension method for consistent logic :
public static class IstitutoExtensions
{
public static Expression<Func<Istituto, bool>> EqualsByName(string name) =>
e => e.Name == name;
}
Istituto? istituto = await context.Istituti .FirstOrDefaultAsync(IstitutoExtensions.EqualsByName(resource.Name));