Un servizio web che chiamo restituisce un elenco di dati. I dati dal webservice vengono aggiornati periodicamente, quindi una chiamata al servizio web eseguita in un'ora potrebbe restituire gli stessi dati di una chiamata effettuata in un'ora. Inoltre, i dati vengono restituiti in base a una data di inizio e di fine.
Abbiamo più utenti che possono eseguire la ricerca del servizio web e è probabile che i dati duplicati vengano restituiti (in particolare per i dati storici). Tuttavia non voglio inserire questi dati duplicati nel database.
Ho creato una tabella db in cui sono archiviati i dati (le colonne più importanti sono)
Id int autoincrement PK
Date date not null --The date to which the data set belongs.
LastUpdate date not null --The date the data set was last updated.
UserName varchar(50) --The name of the user doing the search.
Uso SQL Server 2008 Express con C # 4.0 e Visual Studio 2010. Entity Framework viene utilizzato come ORM. Se le procedure memorizzate potrebbero essere evitate nella soluzione proposta, allora questo sarà un vantaggio.
Un altro modo di interpretare ciò che sto chiedendo una soluzione è il seguente: Ho un milione di record unici nel mio tavolo. Un utente fa una nuova ricerca. I risultati della ricerca dell'utente contengono circa 300k di record dei dati già presenti nel db. È necessaria una soluzione efficiente per trovare e inserire solo i record univoci.
Una combinazione di Date
, LastUpdate
e UserName
rende un record univoco.