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