Hi, at first my example mapping:

<class name="Blog">
   <id name="Id">
     <generator class="guid.comb" />
   </id>
   <set name="Posts" cascade="all">
     <key column="Blog_Id" not-null="true" />
     <one-to-many class="Post" />
   </set>
</class>

<class name="Post">
   <id name="Id">
     <generator class="guid.comb" />
   </id>
</class>

Ive choose to use an Uni-Directional association, because the model is
cleaner and i don't have to manage the other direction.

So my problem is that i want to allow this

blog.Posts.Add(new Post());

but when i do

session.Save(new Post());

NHibernate should throw an exception since the Post have no Blog 
assigned to it.

Since database not-null constrains dose not work as described in 
documentation:

  Very Important Note: If the <key> column of a <one-to-many>
  association  is declared NOT NULL, NHibernate may cause constraint
  violations when it creates or updates the association. To prevent this
  Problem, you must use a bidirectional association with the many valued
  end (the set or bag) marked as inverse="true". See the discussion of
  bidirectional associations later in this chapter.

Because it dose the insert first with the Blog_Id null
and after that it it updates the Database with the Blog_Id.

So my question is, is there any generic way to prevent NHibernate from 
inserting Posts without an associated Blog? I think about creating an 
event, but i am not sure which is the best strategy to detect this an a 
generic way.

And second, since the database way is not supported, isnt it a good idea 
to add something like a soft constraint where nhibernate checks if it 
has an association and throw before the transaction is committed.

Regards,
Steve

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to