lunedì 24 settembre 2012

Entity Framework The table/view does not have a primary key defined and no valid primary key oralce

Se utilizzate Entity Framework con Oracle, e provate ad aggiungere un vista, può capitarvi che vi visualizza questo messaggio informativo anche se compilando non vi da nessun errore o impedimento:
"The table/view does not have a primary key defined and no valid primary key"
Questo è dovuto al fatto che la "Vista" non contiene un campo ID chiave.
Se non potete riportare il campo chiave (per esempio nel caso di una query con una clausola Group By)  dovete crearlo in esecuzione, per esempio con la funzione "ROW_NUMBER()".
Qui di seguito riportiamo la query

Select (nvl(ROW_NUMBER() OVER(ORDER by TR.IDERRORE),0))  as ID,  Count(TR.IDERRORE) as TOTALE, EG.DESCRIZIONE as DESCRIZIONE from TabA FS
left join TabB TR ON FS.ID = TR.ID
left join  TabC EG on TR.ID = EG.ID
where FS.Campo = 'E' 
GROUP BY TR.ID, EG.CD

In questo modo viene creato un campo ID fittizio.
Ora dobbiamo renderlo primary Kky, per far ciò, in Oracle dobbiamo eseguire il seguente comando Sql.

alter view MiaVista add constraint id_pk primary key (ID) disable;

A questo punto, andate nel designer di Entity Framework ed aggiornate la vista, il messaggio di errore non verrà visualizzato.


Nessun commento: