2009-10-01 7 views

ответ

3

Если использовать, вы имеете в виду встроенный в SubSonic, то нет. Однако оптимистический параллелизм может быть достигнут с SubSonic достаточно просто.

Предполагая, что вы используете SQL Server (если я не дам вам перевести следующие инструкции в решение, которое работает на поставщике базы данных), это один путь:

  1. Включить столбец типа timestamp на каждом столе, который вы хотите обеспечить параллелизм.

    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. Считать значение метки времени наряду с данными, так что вы можете использовать его в дальнейшем для сравнения.

    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. При выполнении UPDATE сравнивают значение метки времени на значение базы данных. Если метка не совпадает, строка была изменена, и пользователь может быть уведомлен о ситуации (или вы можете справиться с этим, как вам нравится)

    // ... 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

Отличный ответ. Хорошая работа. –

+0

это похоже ok. должна иметь всю логику, реализованную мной или создать общий способ. Есть ли какая-то ручная документация api и т. Д., Которую я могу изучить? Мои поиски не дали никаких результатов. Thx very musch – Mantzas

+0

Ознакомьтесь с официальной документацией по адресу http://subsonicproject.com/docs/ – dcharles

Смежные вопросы