// #end example private void storeInitialObjects(DatabaseSupportWithReadWriteLock dbSupport) { dbSupport.InWriteTransaction( container => { container.Store(new Person("Joe")); container.Store(new Person("Jan")); container.Store(new Person("Joanna")); container.Store(new Person("Phil")); }); }
// #example: Use a read transaction for reading objects private void ListAllPeople(DatabaseSupportWithReadWriteLock dbSupport) { dbSupport.InReadTransaction( container => { var result = from Person p in container select p; foreach (Person person in result) { Console.WriteLine(person.Name); } }); }
// #end example // #example: Use a write transaction to update objects private void UpdateAllJoes(DatabaseSupportWithReadWriteLock dbSupport) { dbSupport.InWriteTransaction( container => { var allJoes = from Person p in container where p.Name == "Joe" select p; foreach (Person joe in allJoes) { joe.Name = "New Joe"; container.Store(joe); } }); }
public void Main() { using (var database = new DatabaseSupportWithReadWriteLock(Db4oEmbedded.OpenFile("database.db4o"))) { storeInitialObjects(database); // Schedule back-ground tasks Action<DatabaseSupportWithReadWriteLock> toRun = UpdateAllJoes; var waitHandle = toRun.BeginInvoke(database, null, null); // While doing other work ListAllPeople(database); // Wait for the task to finish toRun.EndInvoke(waitHandle); } }