To try to be a little more clear (and try to use this group even for ideas,
not only for NH-Core)...
What is completely possible, without touch NH core, is:
To avoid the implementation of specific methods to Add/Remove children from
a collection of Parent-Child relation we can provide "the final cut":
strongly typed safe an encapsulated collection to manage
Parent-Child relationship.
A little project with those classes with reference only to .NET.
Another project with IUserCollectionType to work with NH.
In this way the user can expose ICollection<TChild> instead
IEnumerable<TChild>.
public Order()
{
Items= new ParentChildBag<Order, OrderItem>(this);
}
public ICollection<OrderItem> Items {get; private set;}
In the other prj we will have PersistentParentChild<TParent, TChild> with
the implementation for NH.
With XML mapping you know that the work is easy.
With FNH you can do the same as in XML or with a convetion.
With ConfORM I can implements a simple pattern.
Perhaps we can avoid a hundred of questions about Parent-Child relationship
issues giving a cooked and strongly-typed/generic solution for new users ;)
On Thu, Jun 3, 2010 at 10:57 AM, Roger Kratz <[email protected]>wrote:
> Personally I don’t think so. What about PI for transient entities? I
> think this should be a domain concern.
>
>
>
> Or am I missing how you think this should be solved on newly created
> entities?
>
>
>
> /Roger
>
>
>
> *From:* [email protected] [mailto:[email protected]] *On
> Behalf Of *Fabio Maulo
> *Sent:* den 3 juni 2010 14:19
> *To:* [email protected]
> *Subject:* Re: [nhusers] Beginners question: How to add or delete related
> entity
>
>
>
> Roger...
>
> Perhaps we should implements a custom ParentChildSet and ParentChildBag
> somewhere ?
>
> What do you think ?
>
> On Thu, Jun 3, 2010 at 8:34 AM, Roger Kratz <[email protected]>
> wrote:
>
> Don't expose the mutable collection. Instead have something like...
>
> department.AddUnit(new Unit());
> department.RemoveUnit(someUnit);
>
> ...and handle the birefs inside these methods.
>
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf
> Of Skiv
> Sent: den 3 juni 2010 10:17
> To: nhusers
> Subject: [nhusers] Beginners question: How to add or delete related entity
>
> For example, I have entity with one to many relation: Department has
> many Units:
>
> class Department
> {
> public decimal Id{get;set;}
> public IList<Unit> Units{get;set;}
> }
>
> class Unit
> {
> public decimal Id{get;set;}
> public Department {get;set;}//Parent
> }
>
> If I want add new Unit:
> Unit newUnit =new Unit{Department=someDepartment};
> session.Save(newUnit);
>
> So, if I already have parent Department, it's Units collection isn't
> updated automatically, I must add it manually:
> someDepartment.Units.Add(newUnit);
>
> Same is with entity deletion:
> Unit deletedUnit = someDepartment.Units[0];
> session.Delete(deletedUnit);
> deletedUnit.Department.Units.Delete(deletedUnit);
>
> Is this ok? Maybe there is more convenient way to do 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]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>
> --
> 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]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>
>
>
> --
> Fabio Maulo
>
> --
> 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]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
> --
> 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]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
--
Fabio Maulo
--
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.