Saya mengalami masalah yang sama persis ini dan kehilangan hampir dua hari mencoba mencari tahu. Tampaknya ada bug dalam pemetaan EntityFramework untuk MySql.
Solusinya adalah dengan memindahkan DateTime.UtcNow perhitungan di luar lambda yang dicakup dan masukkan nilai sebenarnya.
var utcNow = DateTime.UtcNow;
query = query.Where(p => p.Published);
query = query.Where(p => !p.StartDate.HasValue || p.StartDate <= utcNow);
query = query.Where(p => !p.EndDate.HasValue || p.EndDate >= utcNow);