Hi Greg
I have just tested a suggestion by Oren and it seems that it is in fact
possible to update an agg-root without modifying it. All you have to do to
mark it dirty is to update its version....
public class Person
{
public Guid ID { get; set; }
public int Version { get; set; }
public string Name { get; set; }
}
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="BusinessClasses.Person, BusinessClasses" lazy="false"
table="People">
<id name="ID" type="System.Guid" access="backfield">
<generator class="guid.comb"/>
</id>
<version name="Version" access="backfield"/>
<property name="Name" access="backfield"/>
</class>
</hibernate-mapping>
Guid key;
using (var session = sessionFactory.OpenSession())
using (var transaction = session.BeginTransaction())
{
var person = new Person();
person.Name = "Pete";
session.Save(person);
transaction.Commit();
key = person.ID;
}
using (var session = sessionFactory.OpenSession())
using (var transaction = session.BeginTransaction())
{
var person = session.Get<Person>(key);
person.Version = 999;
session.Save(person);
transaction.Commit();
key = person.ID;
}
Results in following SQL....
INSERT INTO People (Version, Name, ID) VALUES (@p0, @p1, @p2);
@p0 = '1',
@p1 = 'Pete',
@p2 = '0c4eaeb7-4058-45af-96b6-9c0d00f5b1d0'
[Select]
UPDATE People SET Version = @p0, Name = @p1
WHERE ID = @p2 AND Version = @p3;
@p0 = '2',
@p1 = 'Pete',
@p2 = '0c4eaeb7-4058-45af-96b6-9c0d00f5b1d0',
@p3 = '1'
So it seems that NH picks up the change to Version as an indication that it
is dirty, but when it updates it sets it to OldVersion+1 rather than
PropertyValue+1 - Which seems to be exactly what we want!
Pete
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---