Ciao a tutti,
ho un problema con la concorrenza ottimistica in c# visual studio 2010 framework 4.0: ossia ho creato un file .edmx per l'entity framework in cui ho mappato ,con l' "update model from database", una tabella 8di nome prova) con i seguenti campi : PriKey,cognome e vercol;
il campo vercol è un timestamp che ho impostato con 'Concurrency mode ' a 'fixed' , così come per il campo 'Cognome'

Utilizzando questo codice però non riesco a scatenare l'errore
di concorrenza (OptimisticConcurrencyException) :

TestConcorrenzaEntities ctx1 = new TestConcorrenzaEntities();
TestConcorrenzaEntities ctx2 = new TestConcorrenzaEntities();

try
{

prova p1 = ctx1.prova.Where(cust => cust.PriKey == 1).First();
prova p2 = ctx2.prova.Where(cust => cust.PriKey == 1).First();

//blocco p1
p1.cognome = "bb";
p1.VerCol = p1.VerCol;
ctx1.SaveChanges();

//blocco p2
p2.cognome = "aa";
p2.VerCol = p2.VerCol;
ctx2.SaveChanges();


}
catch (OptimisticConcurrencyException ex)
{

}


----------------------------------

Ecco la Stored procedure per update su db:

USE [TestConcorrenza]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[updateProva]
(@PriKey int,@cognome varchar(50),@VerCol timestamp)
AS
BEGIN

SET NOCOUNT ON;

update prova
set
Cognome = @cognome
where
(PriKey=PriKey)
and
([VerCol]=@VerCol)

IF @@ROWCOUNT > 0
BEGIN
SELECT [VerCol] FROM prova
WHERE [VerCol]=@VerCol;
END


END






Eppure ho impostato tutto per la concorrenza per l'EF,o almeno credo, però il risultato è che nel
db (Sql server 2008 express dove c'è una stored procedure per l'update) il valore "bb" di cognome del blocco p1 viene updatato mentre quando arriva
a p2 non scrive il valore "aa" ma non và in errore.

Ho visto in giro ma pare che ad altri funzioni.Forse mi manca qualche info?

Secondo voi a cosa può essere dovuto il fatto che non scatti l'eccezione per concorrenza, ma si limiti a non scrivere il blocco p2?



Ciao