I have an object where I maintain a relationship to another object:
public class Foo {
public Bar Bar { get; set; }
}
In the mapping I reference Bar to that I can maintain the relationship
- I don't want the parent object to update properties in the child,
just the existence of the relationship:
References(x => x.Bar, "BarId")
.Cascade.None();
In the UI layer I create the relationship using a property which is
not the underlying primary key:
item.Bar = new Bar { Code = "123" };
In the repository layer I hydrate the object if it doesn't have the
primary key populated:
if(item.Bar.Id == null)
{
item.Bar = barRepository.RetrieveByCode(item.Bar.Code);
}
When I the RetrieveByCode line runs (which is a Criteria.UniqueResult
under the covers) I get a TransientObjectException telling me that
"the object references an unsaved transient instance - save the
transient instance before flushing" for the Bar type.
When I run the same code path without creating the temporary Bar
object it works. It appears that the Bar created as a temporary oject
is tracked by NHibernate, yet I want it to forget that it ever existed
as it is only a placeholder.
Any thoughts on how to achieve this?
--
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.