When I call DbSet.FirstOrDefault() by passing a predicate that compares generic type TId, I get the following exception:
unable to create a constant value of type 'system.object'. only primitive types or enumeration types are supported in this context.
Interface for type being queried:
interface IEntity<TId>
{
TId id { get; set; }
}
The exception is thrown here:
public virtual TEntity Get<TEntity, TId>(TId id) where TEntity : class, IEntity<TId>
{
return dbContext.Set<TEntity>().FirstOrDefault(e => e.Id.Equals(id));
}
The function will only work if TId is constrained as struct. How can I include string as supported type? If it's not possible, is it possible to accomplish the task a different way?