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));