2009-10-01 7 views

Répondre

3

Si par utilisez vous voulez dire intégré à SubSonic, puis n °. La concurrence optimiste peut cependant être atteinte avec SubSonic raisonnablement simplement.

En supposant que vous utilisez SQL Server (sinon je vais vous laisser traduire les instructions suivantes dans une solution qui fonctionne sur votre fournisseur de base de données) c'est une façon d'aller:

  1. Inclure une colonne de type timestamp sur chaque table que vous souhaitez assurer la simultanéité.

    CREATE TABLE Product 
    (
        ProductID int NOT NULL IDENTITY(1,1), 
        Name varchar(256) NOT NULL, 
        RowStamp timestamp /* This will hold a timestamp for the table */ 
    ) 
    
  2. Lire la valeur de l'horodatage ainsi que les données afin que vous puissiez l'utiliser ultérieurement pour comparer.

    var product = new SubSonic.Select() 
        .From<Product>() 
        .Where(Product.ProductIDColumn).IsEqualTo(productId) 
        .ExecuteSingle<Product>(); 
    var rowStamp = product.RowStamp; 
    
    // ... Show a form to the user with the data from the product  
    
  3. Lors d'une UPDATE comparer la valeur de l'estampille temporelle à la valeur de la base de données. Si l'horodatage ne correspond pas, la ligne a été modifiée et l'utilisateur peut être informé de la situation (ou vous pouvez le manipuler comme bon vous semble)

    // ... After retrieving the values from the form 
    
    var result = new SubSonic.Update(Product.TableSchema) 
        .Set(Product.NameColumn).Equal(newName) 
        .Where(Product.ProductIDColumn).IsEqualTo(productId) 
        .And(Product.RowStamp).IsEqualTo(rowStamp) 
        .Execute(); 
    
    if (result != 1) 
    { 
        // Notify the user there may be a problem 
    } 
    
+1

Bonne réponse. Bon travail. –

+0

cela semble ok. doit avoir toute la logique implémentée moi-même ou créer une manière générique. Y at-il une sorte de documentation manuelle api etc. que je peux étudier? Mes recherches n'ont eu aucun résultat. Thx très musch – Mantzas

+0

Consultez la documentation officielle à http://subsonicproject.com/docs/ – dcharles