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