Linq e rowguid

SE si generano con Linq to Entities o Linq to Sql delle entità per tabelle con rowguid non vine trasportata l’impostazione di generazione automatica del valore da parte del Database come invece accade per le identità.

image  image

Questo significa che se si inseriscono record nuovi nella tabella con una colonna rowguid a quest’ultima viene assegnato il valore Guid.Empty ({00000000-0000-0000-0000-000000000000}).

Per ovviare al problema è possibile ovviare in due medi diversi:

  1. Impostare manualmente la proprietà Autogenerate Value a True e la proprietà Auto-Sync a OnInsert. Si tenga però conto che nel caso di rigenerazione dello schema occorerà ricordarsi di reimpostare tali proprietà.
  2. Impostare la colonna rowguid a Guid.NewGuid() quando è necessario inserire dei nuovi record nella tabella.

Per ulteriori approfondimenti si veda Working with Entity Keys. Inoltre è stata rilasciata una hotfix che non risolve questo specifico problema, ma corregge un issue legato all’impostazione dell’attributo StoreGeneratedPattern nell’Entity Designer, l’hotfix è disponibile al seguente link KB2561001 – Hotfix for setting StoreGeneratedPattern attribute in Entity Designer.