web-dev-qa-db-fra.com

LINQ to Entities ne reconnaît pas la méthode «System.DateTime GetValueOrDefault ()»

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.

30
jfk

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(); 
53
jmoerdyk