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