Soft Deletes

[Updated]

What can I do if instead of physically delete a record in the database I just want to mark it as deleted?

There are at least two possibilities to achieve the desired result

  • put the necessary logic into the repository
  • Write and register a DeleteEvent-Listener for NHibernate

The Domain Model

Let's assume a simple order entry system with just two entities Order and OrderLine

image

Note: the implementation of the IdentityFieldProvider class I have discussed here.

The business requirements are such as that you are not allowed to physically delete an order from the system but just mark it as deleted in case where the user cancels an order. That's the reason why we have a property IsDeleted in the two entities. When querying for orders the system will (automatically) filter out orders having IsDeleted=true.

Let's have a look at the implementation of the Order and OrderLine entities. (Note: I have only implemented the absolute minimum needed for this sample to work. A realistic order entity would be more complex.)

public class Order : IdentityFieldProvider<Order>
{
    public virtual string CustomerName { get; set; }
    public virtual DateTime OrderDate { get; set; }
    public virtual bool IsDeleted { get; set; }
    public virtual ISet<OrderLine> OrderLines { get; set; }
 
    public Order()
    {
        OrderLines = new HashedSet<OrderLine>();
    }
}
 
public class OrderLine : IdentityFieldProvider<OrderLine>
{
    public virtual string ProductName { get; set; }
    public virtual int Amount { get; set; }
    public virtual bool IsDeleted { get; set; }
}

And here are the mappings (For this sample I have the mapping of both entities in a single XML file although the recommendations are one mapping per entity)

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="Domain"
                   namespace="Domain"
                   schema="Playground">
 
  <class name="Order" table="Orders" where="IsDeleted=0">
    <id name="Id">
      <generator class="guid"/>
    </id>
    <property name="CustomerName" not-null="true" length="50"/>
    <property name="OrderDate" not-null="true"/>
    <property name="IsDeleted" not-null="true"/>
    <set name="OrderLines" cascade="all-delete-orphan">
      <key column="OrderId"/>
      <one-to-many class="OrderLine"/>
    </set>
  </class>
 
  <class name="OrderLine" where="IsDeleted=0">
    <id name="Id">
      <generator class="guid"/>
    </id>
    <property name="ProductName" not-null="true" length="50"/>
    <property name="Amount" not-null="true"/>
    <property name="IsDeleted" not-null="true"/>
  </class>
 
</hibernate-mapping>

Note the where attribute on the <class> tag of the order mapping. This contains a filter to avoid that NHibernate returns orders marked as deleted when you query for orders.

Logic in the Repository

This is easy. Assume that we have a OrderRepository class with a Remove method which physically deletes the order from the system and a SoftDelete method witch only logically removes the order from the system.

Normal Delete Operation

The implementation of the Remove method would probably look similar to this

public void Remove(Order order)
{
    using (ISession session = SessionFactory.OpenSession())
    {
        using (ITransaction tx = session.BeginTransaction())
        {
            session.Delete(order);
            tx.Commit();
        }
    }
}

and the SQL generated by NHibernate is as follows

NHibernate: UPDATE Playground.OrderLine SET OrderId = null WHERE OrderId = @p0; @p0 = '34e04bfd-18d2-4451-8673-b98466c6260f'
NHibernate: DELETE FROM Playground.OrderLine WHERE Id = @p0; @p0 = '82b6ba92-9eca-494e-a71f-10a2fa0012db'
NHibernate: DELETE FROM Playground.OrderLine WHERE Id = @p0; @p0 = 'bec15bd1-1216-4623-bfd9-1319fbef764b'
NHibernate: DELETE FROM Playground.Orders WHERE Id = @p0; @p0 = '34e04bfd-18d2-4451-8673-b98466c6260f'

This causes an Order (and its set of OrderLine items) to be physically deleted from the system. Note that I'm using SQL Server 2005 as database and my tables are in the Schema called 'Playground'.

Soft Delete

Now for a soft delete we could write in the repository something like this

public void SoftDelete(Order order)
{
    using (ISession session = SessionFactory.OpenSession())
    {
        using (ITransaction tx = session.BeginTransaction())
        {
            order.IsDeleted = true;
            session.Update(order);
            tx.Commit();
        }
    }
}

Note that I have implemented the IsDeleted property of the Order entity such as that it propagates changes to its OrderLine children (only if IsDeleted is set to true).

private bool _isDeleted;
public virtual bool IsDeleted 
{
    get { return _isDeleted; }
    set
    {
        _isDeleted = value;
        if (_isDeleted)
        {
            foreach (var line in OrderLines)
            {
                line.IsDeleted = true;
            }
        }
    } 
}

and the SQL generated by NHibernate is similar to this

NHibernate: UPDATE Playground.Orders SET CustomerName = @p0, 
  OrderDate = @p1, IsDeleted = @p2 WHERE Id = @p3; @p0 = 'IBM', 
  @p1 = '09.04.2008 00:00:00', @p2 = 'True', 
  @p3 = '14bd85fd-0094-446b-8416-953e158747a1'
 
NHibernate: UPDATE Playground.OrderLine SET ProductName = @p0, 
  Amount = @p1, IsDeleted = @p2 WHERE Id = @p3; @p0 = 'Intel Dual Core CPU A', 
  @p1 = '1', @p2 = 'True', @p3 = 'fd274287-22a0-460f-a2f1-42cdb031000c'
 
NHibernate: UPDATE Playground.OrderLine SET ProductName = @p0, 
  Amount = @p1, IsDeleted = @p2 WHERE Id = @p3; @p0 = 'Intel Dual Core CPU B', 
  @p1 = '1', @p2 = 'True', @p3 = 'ec714db7-61e2-4d64-a532-d05da5b8c5af'

As expected the records are not deleted in the database but the order and its order lines are marked as deleted.

Implement and register a DeleteEvent Listener

If you want a more generic approach you'll have to write a DeleteEvent Listener and register it with the NHibernate configuration. You can argue that "soft delete" is a cross cutting concern and as such should not be implemented in the repositories.

This approach is a little bit more involved and you need some intimate knowledge of the inner workings of NHibernate. Events and Event Listeners are a new concept introduced in NHibernate 2.0. Unfortunately this also means that there is not much help or description around at the moment. But the concept is very powerful! What you can do is only limited by your imagination...

Implement the DeleteEvent Listener

A starting point would be to define a class e.g. called MyDeleteEventListener which inherits from the DefaultDeleteEventListener class implemented in NHibernate. Then you override e.g. the DeleteEntity method and define your own "delete" logic.

The code might look similar to this (many thanks for help to Will Shaver)

public class MyDeleteEventListener : DefaultDeleteEventListener
{
    protected override void DeleteEntity(IEventSource session, object entity, 
        EntityEntry entityEntry, bool isCascadeDeleteEnabled, 
        IEntityPersister persister, ISet transientEntities)
    {
        if (entity is ISoftDeletable)
        {
            var e = (ISoftDeletable)entity;
            e.IsDeleted = true;
 
            CascadeBeforeDelete(session, persister, entity, entityEntry, transientEntities);
            CascadeAfterDelete(session, persister, entity, transientEntities);
        }
        else
        {
            base.DeleteEntity(session, entity, entityEntry, isCascadeDeleteEnabled,
                              persister, transientEntities);
        }
    }
}

Here I assume that each entity which should be "soft deleted" has to implement a special interface ISoftDeletable which is defined as follows

public interface ISoftDeletable
{
    bool IsDeleted { get; set; }
}

The code in the overriden DeleteEntity method first checks whether the entity implements this interface. If NOT then the call is just forwarded to the base class for default execution (that is the entity will be physically deleted from the system). But if the entity implements the interface then we set its property IsDeleted to true, call the CascadeBeforeDelete and CascadeAfterDelete methods of the base class and are done.

Register the DeleteEvent Listener

Now you have to register this class with your NHibernate configuration

_configuration = new Configuration();
_configuration.Configure();
 
// register the DeleteEvent Listener
_configuration.SetListener(ListenerType.Delete, new MyDeleteEventListener());
 
_configuration.AddAssembly(Assembly.Load(new AssemblyName("DataLayer")));
_sessionFactory = _configuration.BuildSessionFactory();

Testing the DeleteEvent Listener

If you create initial data for your tests like this

private void CreateInitialData()
{
    _order = new Order {CustomerName = "IBM", OrderDate = DateTime.Today};
    _orderLine1 = new OrderLine { Amount = 1, ProductName = "Intel Dual Core CPU A" };
    _orderLine2 = new OrderLine { Amount = 1, ProductName = "Intel Dual Core CPU B" };
    _order.OrderLines.Add(_orderLine1);
    _order.OrderLines.Add(_orderLine2);
 
    using (ISession session = SessionFactory.OpenSession())
    using (ITransaction tx = session.BeginTransaction())
    {
        session.Save(_order);
        tx.Commit();
    }
}

When running a unit test like this

[Test]
public void DeleteEventListener_intercepts_delete_request_for_order()
{
    Order orderToDelete;
    using(ISession session = SessionFactory.OpenSession())
        using (ITransaction tx = session.BeginTransaction())
        {
            orderToDelete = session.Get<Order>(_order.Id);
 
            Assert.IsNotNull(orderToDelete);
            Assert.AreNotSame(_order, orderToDelete);
            Assert.AreEqual(_order.OrderLines.Count, orderToDelete.OrderLines.Count);
 
            session.Delete(orderToDelete);
            tx.Commit();
        }
 
    using (ISession session = SessionFactory.OpenSession())
        Assert.IsNull(session.Get<Order>(orderToDelete.Id));
}

the SQL sent to the database will be similar to this

NHibernate: UPDATE Playground.Orders SET CustomerName = @p0, OrderDate = @p1,
  IsDeleted = @p2 WHERE Id = @p3; @p0 = 'IBM', @p1 = '10.04.2008 00:00:00',
  @p2 = 'True', @p3 = 'd51345d3-234e-4d7f-90cc-00f7767ae15f'
 
NHibernate: UPDATE Playground.OrderLine SET ProductName = @p0, Amount = @p1,
  IsDeleted = @p2 WHERE Id = @p3; @p0 = 'Intel Dual Core CPU A', @p1 = '1',
  @p2 = 'True', @p3 = 'dbfe4468-9c03-4bfe-8520-0a52312b72a8'
 
NHibernate: UPDATE Playground.OrderLine SET ProductName = @p0, Amount = @p1,
  IsDeleted = @p2 WHERE Id = @p3; @p0 = 'Intel Dual Core CPU B', @p1 = '1',
  @p2 = 'True', @p3 = '06561137-2060-46ef-a331-491dfdac705c'

Note that when using a DeleteEvent listener you don't have to implement any cascading logic for the IsDeleted property in the Order (as opposed to the "manual" case where you put your logic in the repository). The IsDeleted property can be simply implemented like this

public virtual bool IsDeleted { get; set; }

Summary

I have show two ways how to fulfill the business requirement not to physically delete an entity from the system but rather mark it as deleted when the application requests deletion of an entity. The first one is done "manually" in the repository for the respective entity or aggregate. The second one is using the concept of event listeners which is new to NHibernate and needs some intimate knowledge on the internal workings of NHibernate.

The second approach has the advantage that the business requirement of "soft deletes" is treated as a cross cutting concern and the solution presented is a generic one.

Blog Signature Gabriel .

Print | posted on Tuesday, April 08, 2008 9:57 PM

Comments on this post

# re: Soft Deletes

Requesting Gravatar...
This one interests me a lot...
Left by pduh on Apr 09, 2008 3:13 AM

# re: Soft Deletes

Requesting Gravatar...
I am wondering how it is possible to inject custom delete rules into this system?
And also wondering how things can be deleted from the database later, when the delete call is being intercepted.
Left by Dennis on Apr 10, 2008 2:53 AM

# re: Soft Deletes

Requesting Gravatar...
@Dennis: you can always physically delete entities in the database just define a "copy" of the respective entity (class, e.g. "Order_Admin") and don't implement the ISoftDeletable interface then a call to delete will not be intercepted. But do you really WANT to do this? This would violate the business requirements...
Left by Gabriel Schenker on Apr 10, 2008 3:29 AM

# re: Soft Deletes

Requesting Gravatar...
Thanks
Left by Kenneth on Apr 10, 2008 8:10 AM

# re: Soft Deletes

Requesting Gravatar...
@Gabriel: Just have different Business requirements where must be able to do both :)
Thanks for your answer.
Still wondering how I can put further rules and get the information out. I could utilize a visitor pattern with a status object, but I don't see a way of getting this status object return to be after calling the initial delete.
Left by Dennis on Apr 10, 2008 1:22 PM

# re: Soft Deletes

Requesting Gravatar...
It is very convenient stuff! We've been using similar approach and also added default filter IsDeleted = false in search methods of repository that use Criteria API. But still we have to add this condition explicitly for HQL queries. Are there any alternatives possible for NH 2.0 using Events\Listeners?
Thanks in advance!
Left by vitalya on Apr 13, 2008 6:23 AM

# re: Soft Deletes

Requesting Gravatar...
Can you put the samples on the Code Repository ?

Thanks in advance!!!
Left by pduh on Apr 13, 2008 8:33 AM

# re: Soft Deletes

Requesting Gravatar...
Has anyone actually tried to run this against the NHibernate 2.0 Alpha1 release? The MyDeleteEventListener inherits from DefaultDeleteEventListener & overrides its DeleteEntity method, but in Alpha1 DefaultDeleteEventListener.DeleteEntity is protected internal.

As a result, the code doesn't even compile. Am I missing something??
Left by jrnail23 on Apr 17, 2008 4:13 AM

# re: Soft Deletes

Requesting Gravatar...
Hi Gabriel,

Firstly thanks for taking the time to compile the FAQ - much appreciated to see some examples of NHibernate in action.

In this case, however, I have to agree with jrnail23's comment: this approach simply will not work against NH2.0 Alpha1...

So.... any thoughts on different ways to approach a 'soft-delete'? (more generally: substituting the default delete behaviour)

Cheers.
Left by Andrew on May 18, 2008 10:24 AM

# re: Soft Deletes

Requesting Gravatar...
OK... think I found my own solution: overridding InvokeDeleteLifecycle. The following appears to do what we want:

protected override bool InvokeDeleteLifecycle(IEventSource session, object entity, IEntityPersister persister) {

if (entity is ISoftDeleteable) {
((ISoftDeleteable) entity).IsDeleted = true;

session.Update(entity);

return true;
}
else {
return base.InvokeDeleteLifecycle(session, entity, persister);
}
}
Left by Andrew on May 18, 2008 11:08 AM

# re: Soft Deletes

Requesting Gravatar...
@jrnail23 and Andrew: the code only works to the trunk of NHibernate. The code in the trunk regarding events has been significantly changed after release of Alpha 1
Left by Gabriel Schenker on May 22, 2008 12:09 AM

# How to undelete?

Requesting Gravatar...
Nice FAQ!!

BTW, do you know if the "where" property on the class item can be easily bypassed in a query? (like a query to list all deleted and not deleted objects)

Nowadays I only know how to bypass it by directly using a ISQLQuery, is this the only way to do it?

ISession s;
ISQLQuery q=s.CreateSQLQuery("SELECT * FROM Orders");
q.AddEntity(typeOf(Order)).List<Order>();
Left by Opera362 on Jul 16, 2008 3:23 AM

# re: Soft Deletes

Requesting Gravatar...
@Opera362: the where statement in the mapping file cannot be bypassed by HQL and/or Criteria API
Left by Gabriel Schenker on Jul 20, 2008 6:09 PM

# re: Soft Deletes

Requesting Gravatar...
Is there a way to intercept lazy loading a collection so isDeleted records are not loaded? Essentially I'm looking for a way to add "where IsDeleted = 0" condition for all my lazy loaded collections.
Left by Dmitriy on Jul 22, 2008 7:19 AM

# re: Soft Deletes

Requesting Gravatar...
Gabriel, what is the best solution for using event listeners after changes in the trunk? Since DeleteEntity is not virtual any more.
Thanks
Left by vitalya on Jul 24, 2008 4:52 AM

# re: Soft Deletes

Requesting Gravatar...
@vitalya: please have a look at the latest code from trunk. Since version 2.0 alpha 1 the DeleteEntity is VIRTUAL and has NOT changed since. I reconfirmed it by inspecting the latest source from the trunk
Left by Gabriel Schenker on Jul 28, 2008 5:35 PM

# re: Soft Deletes

Requesting Gravatar...
How is soft-delete handled in a "many-to-many"-bag relation? The many-to-many relation in the mapping file does not have any element for arbitary sql. Is there a way to get the parent and all NONE-soft-deleted children that is linked via a many-to-many relation?

Thanks
Left by Hannes on Oct 20, 2008 2:54 AM

# re: Soft Deletes

Requesting Gravatar...
Great info. I took the first method a step further by adding a custom class-level attribute called "ShouldSoftDelete". Then, in my generic CRUD repository, I look for that attribute when calling delete, and set isDeleted to true and update, instead of calling delete. Works like a charm.

Let me know if anyone would like to see the code...
Left by Jamie on Nov 18, 2008 2:27 PM

# re: Soft Deletes

Requesting Gravatar...
Thanks for this, I think it's pretty much perfect for a project I'm working on.

I'm wondering though, do you know if there is an extensibility point in NHibernate where we are able to make all queries aware of the IsDelete field?
Left by Matt on Nov 21, 2008 3:33 AM

# re: Soft Deletes

Requesting Gravatar...
I have tried the example in this and if i delete a OrderLine from Order and Save Order the OrderLine is physically getting deleted, instead of soft delete. What changes we may have to do inorder to soft delete OrderLine.
Left by Sravan Kumar Surabhi on May 27, 2009 1:17 PM

# re: Soft Deletes

Requesting Gravatar...
What about second level cache? Entity is still there.
Left by dario-g on Jun 05, 2009 3:17 AM

# re: Soft Deletes

Requesting Gravatar...
thanks for this.

this half works for me except my models are subclassed (Joined-Subclass) so that i have a base "Object" table where rows should not be deleted, however the rows should be removed from the child table.

At the moment, i have used your code and it stops the deleting of the rows in the object table (and sets Deleted to True) however i cannot work out how to make it still delete the rows from the child tables
Left by MattF on Jun 09, 2009 8:20 PM

# re: Soft Deletes

Requesting Gravatar...
[related to above comment]
i am thinking i may need a custom persister. what are your thoughts?
Left by MattF on Jun 09, 2009 8:34 PM

# re: Soft Deletes

Requesting Gravatar...
>> How is soft-delete handled in a "many-to-many"-bag relation?

This is a very good question and one I'm keen to find an answer for. What is the effect of this on many-to-many relationships because when I try it the many-to-many select still returns deleted items....

Many-to-one is fine however...
Left by shaun on Jun 15, 2009 6:31 AM

# re: Soft Deletes

Requesting Gravatar...
Are there samples available in the repository?
Left by baby heartbeat monitor on Jul 25, 2009 9:00 PM

# re: Soft Deletes

Requesting Gravatar...
Yes, I'd really like to be able to see some samples myself. Thanks in advance.
Left by Rolling Backpacks on Oct 02, 2009 10:06 AM

# re: Soft Deletes

Requesting Gravatar...
What about second level cache? Entity is still there.
Left by beds on Nov 04, 2009 5:02 AM

# re: Soft Deletes

Requesting Gravatar...
NHibernate that simplifies usage of NHibernate
can help a lot
Left by Orkut Greetings on Nov 16, 2009 10:42 AM

# re: Soft Deletes

Requesting Gravatar...
At last some really good coding material that can help me solve me problems, thank you so much sharing such information with us. Keep up the good work.
Left by Canada Website Design on Dec 05, 2009 10:36 PM

# Pontins

Requesting Gravatar...
Pontins
Left by Pontins on Dec 07, 2009 2:40 AM

# re: Soft Deletes

Requesting Gravatar...
These kind of articles are always attractive and I am happy to find so many good point here in the post, writing is simply great, thanks for sharing.
Left by Tom Ford Sunglasses on Dec 11, 2009 11:21 AM

# re: Soft Deletes

Requesting Gravatar...
silver
Left by silver on Dec 21, 2009 7:09 AM

# re: Soft Deletes

Requesting Gravatar...
alse in search methods of repository that use Criteria API. But still we have to add this condition explicitly for HQL queries. Are there any alternatives possible for NH 2.0 using Events\Listeners?
Thanks in advance!
Left by pandora jewelry on Dec 24, 2009 11:54 PM

# re: Soft Deletes

Requesting Gravatar...
How about the Getting data from db. If I implement softDeletion I have to change somewhere the getting methods like Session.Get<> to take in consideration the deleted objects.

Please have a look at this question:
stackoverflow.com/.../difference-betwwen-nhiber...

I've implemented in the Repository:
if (entity is ISoftDeletable)
{ I create a new criteria}
else {use Session.Get}

But looking to the answer it this is not good approach as it will not use Session and will result with a new query to db.
Left by Ion Suruceanu on Dec 28, 2009 10:00 PM

# re: Soft Deletes

Requesting Gravatar...
Great tips!
Left by Web design firm on Dec 30, 2009 7:58 AM

# re: Soft Deletes

Requesting Gravatar...
An important thing you know if the "where" property on the class item can be easily bypassed in a query? (like a query to list all deleted and not deleted objects).
Can you put the samples on the Code Repository ?

Thanks in advance
Left by Pakistani Lawyer on Jan 02, 2010 11:58 PM

# re: Soft Deletes

Requesting Gravatar...
Thanks for this great info....
Left by SEO Services on Jan 10, 2010 6:39 PM

# Web Development Firm India

Requesting Gravatar...
I admire what you have done here. It is good to see your clarity on this important subject can be easily observed. Tremendous post and will look forward to your future update.

Thanks
Web Development Firm India
Left by James on Jan 11, 2010 4:15 PM

# Franklin

Requesting Gravatar...
Excellent read, I just passed this onto a colleague who was doing a little research on that. And he actually bought me lunch because I found it for him smile So let me rephrase that.
Left by Franklin1 on Jan 13, 2010 12:16 AM

# Web Design New Jersey

Requesting Gravatar...
I havent any word to appreciate this post.....Really i am impressed from this post....the person who create this post it was a great human..thanks for shared this with us.
Left by Web Design New Jersey on Jan 13, 2010 12:19 AM

# SEO VA

Requesting Gravatar...
I was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post.
Left by SEO VA on Jan 13, 2010 12:20 AM

# SEO Surrey

Requesting Gravatar...
I really appreciate the kind of topics you post here. Thanks for sharing us a great information that is actually helpful. Good day!
Left by SEO Surrey on Jan 13, 2010 12:23 AM

# Offshore Software Development India

Requesting Gravatar...
I found your website perfect for my needs. It contains wonderful and helpful posts. I have read most of them and got a lot from them. To me, you are doing the great work. Carry on this. work at home In the end, I would like to thank you for making such a nice website.
Left by Offshore Software Development In on Jan 13, 2010 12:25 AM

# re: Soft Deletes

Requesting Gravatar...
Real Seo In India follows the system of Seo In India, which has been designed and developed to gain Knowledge about SEO In India.Providing a career section powered by Real Seo In India, further improves the efficiency by providing self service modules to visitors.
Left by Seo Services India on Jan 14, 2010 12:53 AM

# re: Soft Deletes

Requesting Gravatar...
Resource Datamine makes your Interview Scheduling and Passive Candidates Search easy. The advanced features of Resource Datamine helps you to make interview scheduling and search of passive candidates fast and efficient. Visit us to know more about Interview Scheduling of Passive Candidates.
Left by Interview Scheduling on Jan 14, 2010 12:54 AM

# Seo Services India

Requesting Gravatar...
NetEdge resolves Internet marketing SEO services in India and globally which in simpler terms means Search Engine Optimization, getting TOP positions for words or phrases which people might search for in search engines. We have been in Internet Marketing Industry for over 15 + years.
Left by Seo Services India on Jan 14, 2010 12:57 AM

# SEO Services Company

Requesting Gravatar...
I admire what you have done here. It is good to see you verbalise from the heart and your clarity on this important subject can be easily observed. Tremendous post and will look forward to your future update.


SEO Service Company
Left by jim on Jan 14, 2010 6:39 PM

# re: Soft Deletes

Requesting Gravatar...
totally awsome
Left by make money online on Jan 16, 2010 1:12 PM

# re: Soft Deletes

Requesting Gravatar...
Make sure to also add this name space tag to your Entry/Individual Archives template. Otherwise, IE won't parse the Face book tags to pull Face book profile pictures when viewing the web page.
Left by meilleur guide de casinos on Jan 17, 2010 10:39 PM

# re: Soft Deletes

Requesting Gravatar...
Replay Jeans
Left by Replay Jeans on Jan 21, 2010 12:45 AM

# re: Soft Deletes

Requesting Gravatar...
An important thing you know if the "where" property on the class item can be easily bypassed in a query? (like a query to list all deleted and not deleted objects).
Left by Asthma Medicines online on Jan 21, 2010 1:10 AM

# re: Soft Deletes

Requesting Gravatar...
Nice Post
Left by Toy Watch on Jan 21, 2010 5:10 PM

# re: Soft Deletes

Requesting Gravatar...
thx for this article.
Left by webkatalog on Jan 24, 2010 8:45 AM

# re: Soft Deletes

Requesting Gravatar...
The diagram worked well. I easily understood what the essay writer is trying to say. Plus the detailed info, this one is really helpful! I hope I can still find same useful articles in this blogsite!
Left by Homework Help on Jan 26, 2010 9:09 PM

# re: Soft Deletes

Requesting Gravatar...
What's more, a bracelet can also be equipped with different small pandora jewelry and even you can change it according to your mood at any time. Here are some meanings of pendant. Small Plane stands for traveling and adventure ; anchor, stability and hope; your baby's boots, having a lot of babies; small feeding pandora bracelets abundant food; Church means happiness and stability of marriage; dragonfly means riches; Eiffel Tower means travel and exploration; four-leaf clover means fortune; horseshoe means luck; Nest means a happy family; bride shows a happy bride in her coming pandora jewelleryship steering shows calming and confidence; pandora ukcoin pandora beadsshows rich marriage life. Wish bone, dreams being about to come true; pandora charm bracelets, love; one heart shot by an arrow, romantic love; purse, wealth; and heart-shaped lock, true love.ujgghfdfg
Left by pandora jewelry on Jan 28, 2010 6:45 PM

# re: Soft Deletes

Requesting Gravatar...
This is an excellent post. Thank you!
Left by thigh high flat boots on Jan 30, 2010 9:11 AM

# get my ex back

Requesting Gravatar...
get ex back by getting ex back and how to get your ex back learn how to get your ex boyfriend back and get your ex back by reading books on how to get your ex girlfriend back how to get your ex back
get your ex back
Left by get my ex back on Jan 30, 2010 8:05 PM

# re: Soft Deletes

Requesting Gravatar...
In my mind in the game if you do not had enough sell wow gold, you will not feel happy, my friends know that I do not had enough sell guild wars gold, so he send me some sell maple story mesos, I was very like the sell lotro gold, he was kindliness, he know how to sell ffxi gil.
Left by sell maple story mesos on Feb 02, 2010 3:06 PM

# re: Soft Deletes

Requesting Gravatar...
Can you elaborate a bit more on how to fulfill the business requirement on not deleted an entity physically from the system? I'd rather mark them as deleted, instead of actually deleting it.
Left by judy derkeithal on Feb 05, 2010 8:23 PM

# Sweepstakes

Requesting Gravatar...

It is good to see you verbalise from the heart and your clarity on this important subject can be easily observed.
Left by Sweepstakes on Feb 08, 2010 9:05 PM

# re: Soft Deletes

Requesting Gravatar...
I will forward this article to him. Pretty sure he will have a good read. Thanks for sharing!
Online school | Applied Arts school | Interior Design degree | Online Business management school | Accounting degree
Left by siomy on Feb 09, 2010 9:56 PM

# re: Soft Deletes

Requesting Gravatar...
This is great information. I used the first method a step further and added a custom class-level attribute called "BetaSoftDelete". Then, in the generic CRUD repository, I looked for that attribute anytime my code called delete, and set isDeleted to true, then updated instead of calling delete. This really works well.
Left by Baby breathing monitor on Feb 10, 2010 6:40 PM

# web design

Requesting Gravatar...
Best web design & website development services for your site.Best web development experts online at webbizideas.com.
Left by rashi on Feb 10, 2010 10:05 PM

# web design company

Requesting Gravatar...
Source.com.hk: Hong Kong based professional web design company offers ecommerce solutions, online shop, web CMS (Content Management System) web site development services.
Left by web design company on Feb 10, 2010 11:08 PM

# Migraine triggers

Requesting Gravatar...
mymigrainejournal.com is the web based tool for people who are suffering from Migraine triggers, Allergy, Physical or Mental stress and other migraine causes.
Left by Migraine triggers on Feb 10, 2010 11:13 PM

# soft delete it is

Requesting Gravatar...
so this is how this soft delete works...I will try it my own...:)
Left by thesis writing service on Feb 14, 2010 7:29 PM

# re: Soft Deletes

Requesting Gravatar...
These free simple seo tips will help your internet or affiliate business a boost. See how these seo optimization tips help you.
Left by Tips For Seo on Feb 15, 2010 4:42 PM

# re: Soft Deletes

Requesting Gravatar...
You helped me a lot! The information is detailed and understandable, so it won't be difficult for people to use the instructions. Thank you very much!!!
Left by Alica Brown on Feb 16, 2010 10:01 PM

# re: Soft Deletes

Requesting Gravatar...
You have a great blog, you have always made my visit a well worth, just keep up the great work my friend.
Nicole
Left by Medela symphony on Feb 17, 2010 6:45 AM

# re: Soft Deletes

Requesting Gravatar...
I really appreciate the kind of topics you post here. Thanks for sharing
Left by Colorado Mortgage on Feb 17, 2010 8:25 PM

# re: Soft Deletes

Requesting Gravatar...
I am actually trying to understand the whole thing religiously, thank you.
Left by Self storage north London on Feb 18, 2010 7:21 AM

# re: Soft Deletes

Requesting Gravatar...
Thanks for the great information; I got a few useful tidbits out of it but I'm afraid the article as a whole is a bit beyond my understanding of database management.
Left by Scrapbook on Feb 18, 2010 2:59 PM

# re: Soft Deletes

Requesting Gravatar...
This thing is beyond my mind but i am trying to understand it.
Left by forex trading on Feb 19, 2010 10:54 AM

# re: Soft Deletes

Requesting Gravatar...
Great information. Thanks for the post.
Left by European Cruises on Feb 20, 2010 9:44 PM

# re: Soft Deletes

Requesting Gravatar...
Very cheap, very seductive, to echocardiography. Strongly recommended! ! !panora jewelry
panora jewelry
Left by pandora jewelry pzm on Feb 21, 2010 2:45 PM

# Teragren Bamboo

Requesting Gravatar...

Teragren Bamboo Floor My Place is an online store offering various brandnames of hardwood, Laminate, bamboo, cork, rugs, tiles and carpet with discounts up to 70 percent off and shipped to your door.


Left by any on Feb 21, 2010 9:41 PM

# # re: Soft Deletes

Requesting Gravatar...
Teragren Bamboo Floor My Place is an online store offering various brandnames of hardwood, Laminate, bamboo, cork, rugs, tiles and carpet with discounts up to 70 percent off and shipped to your door.


Left by Teragren Bamboo on Feb 21, 2010 10:33 PM

# re: Soft Deletes

Requesting Gravatar...
nd 30,000 doctors, plus some dentists and pharmacists, have fled the country as a result, and despite the fact that things have calmed down since the near-chaos of 2006, only about 800 have returned. Toporno film
-indirmeden izle-inndir-şarkisini dinle-justin tv-yükle-full porno indir---konulu porno---liseli kizlar-sexsi-
Left by adsa on Feb 22, 2010 3:58 AM

# re: Soft Deletes

Requesting Gravatar...
Man, need a better captcha here!

Good post. In my team we do a very similar thing (maybe a colleague got inspired here?)

I am having a problem with the approach when it comes to mapping collections of sub-class elements:

stackoverflow.com/.../nhibernate-mapping-set-co...

the where property does not apply to the right object (or database table effectively)
Left by Xult on Feb 23, 2010 8:39 PM

# Atlantica online Gold

Requesting Gravatar...
Do you knowAtlantica online Gold?if you play the online game,you will knowAtlantica Goldis the game gold.In the game,if you had morebuy Atlantica online Gold,you will had a tall level. But if you want cheap Atlantica online Gold,you can come here and spend a little money to boughtAtlantica online money.Quickly come here.
Left by Atlantica online Gold on Feb 24, 2010 1:17 PM

# re: Soft Deletes

Requesting Gravatar...
Good post. In my team we do a very similar thing (maybe a colleague got inspired here?)Thanks!
Recover Deleted Pictures From Memory Card|Restore Deleted Files|Data Recovery Software|进程保护
Left by Data Recovery Software on Feb 24, 2010 3:54 PM

# re: Soft Deletes

Requesting Gravatar...
hi. Can anyone suggest me how is soft-delete handled in a "many-to-many"-bag relation? mickey mouse
Left by leogoldwin on Feb 24, 2010 5:00 PM

# discount Ugg Broome Boots in chestnut leather online sales

Requesting Gravatar...
YS0225A8 Before there was no reason in the world,As now there is!The moncler jackets course of water was my only course,My repetitions oceans' sough and swell ugg adirondack boots!My seasons pleasurable,Before there was no reason in the world,As now there is ugg broome boots!To measure time from sleep I rose to sleep,To measure space I ptured on surprise http://www.edhardy-buy.com/,O meadows of resemblances,I was the grove on whose mosaic floors,The moncler online seeds of otherwise were spent,My gods had many arms,I was the Caesar of unmarshaled grass ugg boots!Faustus in the branches,My first ambitions were my sorrows long!Before there was no reason in the world,As now there is!
Left by discount womens moncler jacket on Feb 24, 2010 11:01 PM

# discount air jordan shoes 23 sales online

Requesting Gravatar...
YS0225A7 when the sun hugs the moon, the sky clses her eyes.when the sun hug the moon the sea quiet her jordans shoes.when the sun hugs the moon,the forest stops her susurrus.when the sun hugs the nike sb dunk high,the desert hodlds her breathe.Thousands of years's waiting is only for this nike acg shoes moment.Never be disappointed.Never give up.It hax been sucha long time.At nike air max 2003 this momentmeet each other in course of time.Do not cry,Moon.I guard yu forever.Cause you are in my life,everyting has its meaning.The fascinating Diamond Ring,is the ring i give you,May it give you warm http://www.nikejordanshoes2sell.com/ threduce your tears.Do not cry,Sun,I will be there with you forever/Meeting you has given me precious memeory.The resplendent Baily Beads.is the gem i give you .May i give you cheap air jordan 22 shoes strength, shine in your morning.Meet soon and part soon.It makes peop;e retrospect in spite of lasting a few minutes.A long times waiting is coming.Don't know when the next meeting is .When the sun hugs the Moon. the Moon hugs the sun as well Hugging tightly,regian the lost nicety.
Left by discount nike air max shoes sale on Feb 24, 2010 11:06 PM

# discount air jordan shoes 25 sales online

Requesting Gravatar...
YS0225A6 When you belive,Though hope is frail.It's hard to kill,Who knows what cheap prada shoes miracles,You can achieve,When you belive! Somehow you will,

You will when you belive new nike air max!And in this time of fear, When prayer so often proves in vain, Hope seems like the http://www.nikeaf1jordanshoes.com/summer birds. Too swif flown away, And now I am standing wholesale gucci shoes here.My heart's so full I can't explain.Seeking faith and speaking women's nike shox words I never thought I'd say, They don't always happen when you ask authentic air jordan shoes.And it's easy to give in to your fear. But when you're blinded by your pain!
Left by discount mens moncler down coat on Feb 24, 2010 11:10 PM

# discount ed hardy women long sleeve shirts sales online

Requesting Gravatar...
YS0225A5 If you think you are beaten, you are! If you think you dare noted hardy clothing, you don't! If you want to win but think you can't, It's almost a cinch you won't ed hardy hoodies! If you think you'll lose,you're lost! For out of the world we find.Success begins with a fellow's will,It's all in a ed hardy shirts state of mind! Life's battles don't always go.To the stronger and faster ed hardy coats man,But sooner or later the mwho wins,Is the man who thinks he can! When You Belive http://www.edfashionclothes.com/,Many night we've prayed!With no proof anyone could hear!In our heart a hopeful moncler online store song,we barely understood!Now we are not afraid !Although we know there's much to fear!We were moving the moncler jackets mountian long,Before we knew we could!There can be miracles!
Left by discount mens moncler down coat on Feb 24, 2010 11:13 PM

# discount christian louboutin sandals online sales

Requesting Gravatar...
YS0226A1 That your heart has been broken,Hear the rds,I'm here, my child,;And know your christian louboutin uk angel has spoken.For even in the darkest hour,When all of discount louboutin shoes hope seems gone,They'll give you strength to live your life,And desire to go on.And if your faith in Heaven, Should ever fade away,They'll help renew your christian louboutin boots spirit, And help you find your way.Even though you're ever filled with doubt, About the christian louboutin pumps life you live,Know that they are there to give you All that they can give.For you see, the Father sent them,Because to Him, you mean so much,That He sent them just for you,my louboutin sale friend,And your life, they will touch.They will always be here,They will never leave your http://www.christianlouboutinshoestore.com/ side;And upon their strength and guidance,You always may rely.Take comfort in their guidance, Draw strength from up above,And know that their sweet presence,Is God's precious gift of love.
Left by cheap christian louboutin shoes on Feb 25, 2010 3:32 PM

# discount women's ugg elsey boots 5596 sales online

Requesting Gravatar...
YS0226A2 If I were a boy again, I would practice perseverance moe often, and never give up a thing because it was ugg australia boots or inconvenient. If we want light, we must conquer darkness. Perseverance can sometimes equal genius cheap ugg boots in its results. “There are only two creatures,” syas a proverb, “who can surmount the pyramids—the eagle and the snail.” If I were a uggs sale boy again, I would school myself into a habit of http://www.topsnowboots.com/ attention; I would let nothing come between me and the subject in hand. I would remember that a good skater never tries to skate in two ugg cardy boots directions at once. The habit of attention becomes part of our life, if we begain early enough. I often hear cheap gucci shoes grown up people say “ I could not fix my attention on the sermon or ugg coquette book, although I wished to do so” , and the reason is, the habit was not formed in youth.
Left by cheap ugg upside boots 5163 on Feb 25, 2010 3:40 PM

# discount Women's ugg adirondack boots II sales online

Requesting Gravatar...
YS0226A3 Hold fast to dreams.For if dreams die. Le is a broken-winged bird,That ugg australia boots can never fly.Hold fast to dreams. For when dreams go,Life is a barren ugg tall boots field, Frozen only with snow !You never know until you try; And you never try unless you really try ugg cardy boot. You give it your best shot; You do the best you can. And if you have done everything http://www.uggsnowbootsbest.com/! In your power,and still,The truth of the uggs argyle knit matter is! That you haven\'t failed at all.When you reach for your dreams,No matter what ugg boots they may be,You grow from the reaching;You learn from the trying;You win from the doing.
Left by cheap ugg classic cardy boots on Feb 25, 2010 3:47 PM

# discount reebok nfl jerseys online sales

Requesting Gravatar...
YS0226A4 A true friend is someone who reaches for yur hand and touches your cheap hockey jerseys heart.There's always going to be people that hurt you,so what you have to do is keep on trusting nfl jerseys and just be more careful about who sport jerseys you trust next time around.Make youself a better person and know who you are discount nba jerseys before you try and know someone else and expect them to know you mlb jerseys on sale.Remember:Whatever happens,happens for a reason.How many people actually have 8 true http://www.nfljerseymlb.com/friends Hardly anyone I know.But some of us have all right friends and good friends.
Left by cheap adiads nba jerseys sale on Feb 25, 2010 3:51 PM

# discount ugg sienna miller boots 5818 sales online

Requesting Gravatar...
YS0226A9 Unwearied still, lover by lover,They paddle in the col,Companionable ugg australia shoes streams or climb the air;Their hearts have not grown old;ugg coquette Passion or conquest, wander where they will, Attend upon them still ugg adirondack boots. But now they drift on the still water, Mysterious, beautiful; Among what http://www.uggboots4buy.com/ rushes will they build, By what lake’s edge or pool,Delight men’s mbt shoes eyes when I awake some day.To find they have flown uggs classic cardy away?Before there was no reason in the world As now there is I was the bough bent easy by a ugg boots bird I was the vague blue-grazing flock The sleeping and invisible!
Left by cheap women's ugg elsey boots on Feb 25, 2010 3:56 PM

# discount mens air jordan shoes 13 online sales

Requesting Gravatar...
YS0226A10 When you are old and gray and full of sleep,And noddin by the moncler jackets fire, take down this book! And slowly read jordans sheoes , and dream of the soft look,Your eyes had once, and of their cheap nike shoes shadows deep;How many loved your moments of glad grace,And loved your beauty with nike air force 1 love false or true; But one man loved the pilgrim soul in you,And http://www.onestop-onlineshopping.com/ loved the sorrows of your changing face; And bending down beside the designer clothing glowing bars,Murmur, a little sadly, how love fled.And paced upon the mountains overhead discount air jordan shoes,And hid his face amid a crowd of stars.
Left by cheap nike air max 90 online on Feb 25, 2010 4:00 PM

# discount louis vuitton damier canvas handbags online sales

Requesting Gravatar...
YS0226A11 Surrounding you are angels,They are there to guide your pah.If designer purses weaesskn overcomes you,They'll give you strength if you will ask. They are your protection.When discount designer bags on sale life seems too hard to bear,And though you feel alone at times, The louis vuitton 2009 angels ... they are there.Their faces may be hidden And their voices you might not hear,But they are ALWAYS with you,Through your laughter or your tears.http://www.handbags4buy.com/ They'll walk along beside you,They'll guide your leather handbags steps along the way, They'll comfort you and hold you,Protect you dior handbags night and day.They'll hold to your hand tightly ,They'll not ever let it go,And they'll gently lead you cheap designer handbagsforward,Taking each step very slow.For even as you slumber,They watch closely over you;They are there beside you. In each and every thing you do.
Left by cheap nike air max 90 online on Feb 25, 2010 4:07 PM

# re: Soft Deletes

Requesting Gravatar...
These types of articles are always attractive, and I am very glad to find so many good points here, after the writing is just great, thanks to share.Essay | Assignment
Left by Dissertation on Feb 25, 2010 6:11 PM

# re: Soft Deletes

Requesting Gravatar...
The best video game sale at wholesale prices - Buy wholesale video game console on sale at the best prices online only available at TechGank.com.
Left by wholesale video game on Feb 25, 2010 6:34 PM

# re: Soft Deletes

Left by colic calm on Feb 26, 2010 7:20 AM

# re: Soft Deletes

Requesting Gravatar...
Well worth the read. Thanks for sharing this information. I got a chance to know about this.
Promotional Codes Betting Sports Steroids Buy Rezultate Live Remi Online
Left by Pariuri Sportive Online on Feb 26, 2010 6:09 PM

# re: Soft Deletes

Requesting Gravatar...
I like these tips!
Left by essays on Feb 27, 2010 1:35 PM

# re: Soft Deletes

Requesting Gravatar...

wedding dresses,wedding gowns,bride dresses,bridesmaids dresses,evening dresses,bridal gowns,flower girl dresses
Wedding Gowns
Formal Gowns
Cocktail Gowns
Find the wedding dress designer and wedding dress that's right for you! Browse dresses from
Bridesmaid Gowns
Evening Gowns
View our selection of exquisite, handmade gowns and dresses for your wedding
Wedding Dresses, Wedding Shoes and Wedding Accessories from wedding shop, the UK's finest collection of designer wedding dresses.
Use the wedding dress and
cheap wedding
wedding dresses
wedding shop
fd
Left by sbb on Feb 27, 2010 10:12 PM

# re: Soft Deletes

Requesting Gravatar...
There are at least two possibilities to achieve the desired result.which can make sofe deletesclassifieds |jobs|iphone repair
Left by iphone repair on Feb 28, 2010 7:18 PM

# re: Soft Deletes

Requesting Gravatar...

wedding dresses,wedding gowns,bride dresses,bridesmaids dresses,evening dresses,bridal gowns,flower girl dresses
Wedding Gowns
Formal Gowns
Cocktail Gowns
Find the wedding dress designer and wedding dress that's right for you! Browse dresses from
Bridesmaid Gowns
Evening Gowns
View our selection of exquisite, handmade gowns and dresses for your wedding
Wedding Dresses, Wedding Shoes and Wedding Accessories from wedding shop, the UK's finest collection of designer wedding dresses.
Use the wedding dress and
cheap wedding
wedding dresses
wedding shop


aaaaa
Left by sbb on Mar 02, 2010 8:08 PM

# re: Soft Deletes

Requesting Gravatar...
Very interesting post guys.

Dissertation Writing
Left by Zieg on Mar 03, 2010 4:07 AM

# Hermes Handbags

Left by Hermes Handbags on Mar 03, 2010 7:19 PM

# re: Soft Deletes

Left by Wales Telecoms on Mar 03, 2010 11:00 PM

# SEO Services Florida

Requesting Gravatar...
SearchXCEL is the industry leading, Best SEO Service Providers and Search Engine Optimization (SEO) Company offering Affordable SEO services to improve website rankings in all the major search engines including Google, Yahoo and Bing for businesses of all sizes throughout the US and the world. Call 877.400.0252 to Request a Free SEO Analysis.
Left by mimii on Mar 04, 2010 6:48 PM

# re: Soft Deletes

Requesting Gravatar...
Simply great..!! really approciate it. Thanks for sharing
Left by Term Papers on Mar 04, 2010 6:50 PM

# re: Soft Deletes

Requesting Gravatar...
Re. Jamie yes please would it be possible to do a follow up on the code.
Left by second hand vans on Mar 05, 2010 8:21 AM

# re: Soft Deletes

Left by physical therapist in texas on Mar 05, 2010 4:38 PM

# re: Soft Deletes

Requesting Gravatar...
I am always searching online for articles that can help me. Thank you
Powerpoint Converter
.
Left by powerpoint on Mar 05, 2010 9:19 PM

# ugg boots

Requesting Gravatar...


they are very good and useful!!!
ugg outlet
cheap uggs
nike shoes
wholesale watches f
Left by ugg boots on Mar 07, 2010 5:28 PM

# Electronic Bazaar

Left by Electronic Bazaar on Mar 07, 2010 10:08 PM

# re: Soft Deletes

Requesting Gravatar...
It’s hard to find knowledgeable people on this topic, but you sound like you know what you’re talking about! Thanks Don’t stop writing, you’ve given me lots of good info! Youtube to MP4 Converter
Convert PDF to image s
Left by powerpoint on Mar 08, 2010 2:08 PM

# re: Soft Deletes

Requesting Gravatar...
My hair is just over my ears. I like two kinds of hair styles most. Firstly, use the ghd straighteners to make

the hair in nature and bouffant style. Divide the hair into several portions. Use ghd pink to roll them inside

towards your ears. Several minutes later, the hair will roll neatly inside in the branches. Secondly, the active and energetic style with the roll of the

direction in the opposite direction can be made similarly with the formal procedure. All you need to do is to roll the hair outward instead of inward

with ghd mk5.
It is so simple that you can have your own charming short hair style with GHD straightener uk. Besides the new hair styles,ghd straighteners can help you with the puffy hair after you get up which is the annoying thing for many short hair

girls.
So
My hair is just over my ears. I like two kinds of hair styles most. Firstly, use the GHD straightener to make the hair in nature and bouffant style.

Divide the hair into several portions. Use GHD hair straightener to roll them inside towards your ears. Several minutes later, the hair will roll neatly

inside in the branches. Secondly, the active and energetic style with the roll of the direction in the opposite direction can be made similarly with the

formal procedure. All you neas long as I have the good tool of ghd pink, no matter what the fashion trend goes of hair styles, I will

stick into my favorite neat short hair.
Left by ghd pink on Mar 09, 2010 3:29 PM

# re: Soft Deletes

Requesting Gravatar...
All you need to do is to roll the hair outward instead of inward with GHD hair straightener.My hair is just over my ears. I like two kinds of hair styles most. Firstly, use the ghd straighteners to make

the hair in nature and bouffant style. Divide the hair into several portions. Use ghd pink to roll them inside

towards your ears. Several minutes later, the hair will roll neatly inside in the branches. Secondly, the active and energetic style with the roll of the

direction in the opposite direction can be made similarly with the formal procedure. All you need to do is to roll the hair outward instead of inward

with ghd mk5.
It is so simple that you can have your own charming short hair style with GHD straightener uk. Besides the new hair styles,ghd straighteners can help you with the puffy hair after you get up which is the annoying thing for many short hair

girls.
So as long as I have the good tool of ghd pink, no matter what the fashion trend goes of hair styles, I will

stick into my favorite neat short hair.
Left by ghd straighteners on Mar 09, 2010 3:33 PM

# re: Soft Deletes

Requesting Gravatar...
I was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post...
cheap vps | cheap hosting
Left by ucvhost on Mar 10, 2010 11:45 PM

# re: Soft Deletes

Requesting Gravatar...
Everybody need directions in life and not only directions, but the driving directions usa. You want to take the best decisions for you, and never miss your opportunities and reach your full potential. But let me ask you a question: Have you always taken the right decisions? Have you always got the perfect directions? Few years ago mapquest usa designed a peace plan for Middle East, it was called УThe road mapФ. They were determined to follow it and to bring peace in that troubled area. I donТt know if that plan worked or not, but I know is not peace in that area now mapquest driving directions.
Left by driving directions usa on Mar 11, 2010 8:10 AM

# re: Soft Deletes

Requesting Gravatar...
I know it
Left by rolex on Mar 11, 2010 2:55 PM

Your comment:

 (will show your gravatar)
 
Please add 5 and 1 and type the answer here: