Luttant avec du code très simple qui ne fonctionne pas là où un code similaire fonctionne dans d'autres classes. Il ne sera pas compilé si je supprime GetValueOrDefault (). J'utilise également System.Linq. J'obtiens cette erreur d'exécution: LINQ to Entities ne reconnaît pas la méthode "System.DateTime GetValueOrDefault ()". Des idées?
public List<AddressModel> GetAll(string customer_number)
{
addresses = (from a in db.ADDRESS
where a.CUSTOMER_NUMBER.Equals(customer_number)
select new AddressModel
{
Address_Id = a.ADDRESS_ID,
System_Id = a.SYSTEM_ID,
Customer_Number = a.CUSTOMER_NUMBER,
Address_Type = a.ADDRESS_TYPE,
Changed_On = a.CHANGED_ON.GetValueOrDefault(DateTime.MinValue),
Created_On = a.CREATED_ON.GetValueOrDefault(DateTime.MinValue),
Email = a.EMAIL
}).ToList();
return addresses;
}
Pourquoi Entity Framework ne pourrait-il pas utiliser ToString () dans une instruction LINQ? traite d'un problème similaire de Linq-to-Entites incapable de traduire la méthode .ToString()
, mais les approches suggérées là-bas - ne pas utiliser la méthode du tout ou faire réparer Microsoft ne fonctionnait pas dans ce cas.
Vous devriez pouvoir utiliser l'opérateur Null Coalescing??
:
addresses = (from a in db.ADDRESS
where a.CUSTOMER_NUMBER.Equals(customer_number)
select new AddressModel
{
Address_Id = a.ADDRESS_ID,
System_Id = a.SYSTEM_ID,
Customer_Number = a.CUSTOMER_NUMBER,
Address_Type = a.ADDRESS_TYPE,
Changed_On = a.CHANGED_ON ?? DateTime.MinValue,
Created_On = a.CREATED_ON ?? DateTime.MinValue,
Email = a.EMAIL
}).ToList();