Thanks a lot

2009/7/16 Jimmy Shimizu <[email protected]>

>
> http://support.castleproject.org/projects/AR/issues/view/AR-ISSUE-266
>
> Markus Zywitza wrote:
> > Please open an issue at donjon, I'll add a guard clause in the
> > AR-initialization.
> >
> > -Markus
> >
> > 2009/7/16 Jimmy Shimizu <[email protected]
> > <mailto:[email protected]>>
>  >
> >     Thanks for your reply.
> >
> >     The initialization of the IList was not the issue, I actually
> >     initialized it upon population therefor it didn't issue an
> >     exception for it (I have however rewritten it now).
> >
> >     The fact remains though, and I seem to have nailed down what
> >     causes it. If I add "Index" to the HasMany-attribute, it magically
> >     works. Seems like it cannot automatically generate the
> >     index-column, nor any name for it, therefore NHibernate throws the
> >     IndexOutOfBoundException.
> >
> >     [HasMany(
> >         typeof( CartDiscount ),
> >         Access = PropertyAccess.FieldCamelcase,
> >         Cascade = ManyRelationCascadeEnum.All,
> >         RelationType = RelationType.List,
> >         Index = "order_index"
> >     )]
> >
> >     However, I tried finding any mentioning of this in the
> >     documentation but couldn't find any, and preferrably it should
> >     throw an understandable exception if "Index" is missing when using
> >     a List or Map relationtype, if it isn't generated by default.
> >     Hopefully this post will help someone in the future, and I try
> >     filing a bug-report.
> >
> >
> >
> >
> >     Markus Zywitza wrote:
> >>     If you put the HasMany on the IEnumerable, NH tries to add things
> >>     to the IEnumerable. I think the error is an NH bug, because the
> >>     value is not tested against null before checking the character.
> >>     Nonetheless, your approach won't function.
> >>
> >>     Use instead a protected or private IList for mapping and create a
> >>     public IEnumerable that reads that IList. You should also
> >>     initialize the backing field with a List. NH doesn't know what
> >>     implementation of IList you want, you could have even rolled your
> >>     own!
> >>
> >>     So this should work:
> >>           private IList<CartDiscount> _applicableDiscounts = new
> >>     List<CartDiscount>();
> >>
> >>           [HasMany(
> >>                 typeof( CartDiscount ),
> >>                 Access = PropertyAccess.FieldCamelcase,
> >>                 Cascade = ManyRelationCascadeEnum.AllDeleteOrphan,
> >>                 RelationType = RelationType.List
> >>             )]
> >>           protected IList<CartDiscount> _ApplicableDiscounts { .... }
> >>
> >>           public IEnumerable<CartDiscount> ApplicableDiscounts { get
> >>     { return _ApplicableDiscounts;} }
> >>
> >>     -Markus
> >>
> >>     2009/7/15 Jimmy Shimizu <[email protected]
> >>     <mailto:[email protected]>>
>  >>
> >>         Hi, I came across an issue when mapping an HasMany-collection.
> >>
> >>         with the following code:
> >>
> >>               private IList<CartDiscount> applicableDiscounts;
> >>
> >>               [HasMany(
> >>                     typeof( CartDiscount ),
> >>                     Access = PropertyAccess.FieldCamelcase,
> >>                     Cascade = ManyRelationCascadeEnum.AllDeleteOrphan,
> >>                     RelationType = RelationType.List
> >>                 )]
> >>                 public IEnumerable<CartDiscount> ApplicableDiscounts
> >>         { .... }
> >>
> >>
> >>         My app fails to start with the following exception:
> >>
> >>         [IndexOutOfRangeException: Index was outside the bounds of the
> array.]
> >>            NHibernate.Mapping.Column.set_Name(String value) in
> c:\CSharp\NH\nhibernate\src\NHibernate\Mapping\Column.cs:85
> >>
> >>
> >>
> >>         Looking at the sourcecode, I see this:
> >>
> >>
> >>         public string Name
> >>         {
> >>             get { return name; }
> >>             set
> >>             {
> >>         85:    if (value[0] == '`')
> >>
> >>
> >>
> >>         and when debugging, I see that value is actually an empty
> >>         string. however, if I change the RelationType on the
> >>         collection to "Set", the problem goes away. Why is that? Is
> >>         it trying to add some secret column which doesn't get a name
> >>         correctly or something?
> >>
> >>         Maybe this should go to NH-list instead, but it's partly an
> >>         ActiveRecord-issue.
> >>
> >>         What is the default RelationType for a generic IList<>? Bag
> >>         or List?
> >>
> >>
> >>
> >>
> >>
> >
> >
> >     >
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" 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/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to