Entity Framework e gli errori di validazione

Se usate Entity Framework e se, come me, allineate le piccole modifiche sul “dominio” con modifiche manuali sul DB (specialmente quando avete anni di dati dentro Winking smile), vi può capitare di ottenere il seguente errore:

Validation failed for one or more entities. See 'EntityValidationErrors' property for more details

 

A volte scoprire dov’è il problema di validazione non è così facile e può venire utile metterci un try-catch di questo tipo:

try
{
    ctx.SaveChanges();
}
catch (DbEntityValidationException e)
{
    foreach (var eve in e.EntityValidationErrors)
    {
        Debug.Print("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
            eve.Entry.Entity.GetType().Name, eve.Entry.State);
        foreach (var ve in eve.ValidationErrors)
        {
            Debug.Print("- Property: \"{0}\", Error: \"{1}\"",
                ve.PropertyName, ve.ErrorMessage);
        }
    }
    throw;
}

Ovviamente grazie a Stackoverflow per la dritta Smile

Certo, se usaste CQRS e I database documentali non avreste di questi problemi, ma questa è un’altra storia Winking smile

Update e Inner Join in SQL

Si… lo so… ormai il mondo dello sviluppo si muove su altre strade (ORM, CQRS, DB documentali), ma a volte abbiamo a che fare con il buon vecchio SQL.

Ogni volta che aggiungo una anagrafica dove prima c’era il “codice secco” non mi ricordo come aggironare in una sola volta tutti gli id della tabella…

…beh ecco un memo se siete come me Winking smile

UPDATE b 
SET    b.article_id = a.id 
FROM   billofmaterials b 
       INNER JOIN articles a 
               ON b.articlecode = a.code 
WHERE  b.article_id IS NULL 
Technorati Tags: ,,
«October»
SunMonTueWedThuFriSat
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789