だから私はこのコードを持っています:
public int saleCount(List<Shift> shifts) {
var query = (
from x in database.ItemSales
where shifts.Any(y => y.ID == x.shiftID)
select x.SalesCount
);
return query.Sum();
}
残念ながら、次のエラーがスローされます。
Unable to create a constant value of type 'Shift'.
Only primitive types or enumeration types are supported in this context.
そこで、通常の Entity Framework Code First オブジェクトである shift を定義する場所を次に示します。
[Table("Shifts")]
public class Shift : MPropertyAsStringSettable {
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public int SiteID { get; set; }
public string ShiftID_In_POS { get; set; }
public DateTime ShiftDate { get; set; }
}
問題は、Linq クエリで Shift オブジェクトを使用していることだと思います。そして、「Shift」のリストに対して「Any」操作を行っています。
考えられる解決策の 1 つは、List を Collection などに変更することです。結局のところ、別の場所で linq クエリを使用してロードしていますが、署名は何でしょうか?