I've just committed a fix for this, let me know if there's any further issues with it.
On Tue, May 26, 2009 at 9:00 AM, James Gregory <[email protected]>wrote: > I think we've just found what this problem is in another thread, it's > because conventions aren't being applied to automapped subclasses (and the > conventions are responsible for setting the column names). I should > hopefully get a fix in for this tonight. > > > On Tue, May 26, 2009 at 8:53 AM, Darko Konrad <[email protected]>wrote: > >> >> Hi guys, >> >> I am having exactly the same issue like described above with the >> revision r523 from http://fluentnhibernate.org/downloads >> James: Can you please advise where to find the fixed version of the >> library which resolves this issue? >> >> Thanks a lot. Great project! >> >> >> On 5 Mai, 23:21, James Gregory <[email protected]> wrote: >> > Ricardo: that exception looks very familiar. I committed a fix earlier >> today >> > that certainly fixed an exception very similar to that, if I were you >> I'd do >> > an update and double check it isn't already fixed. >> > >> > On Tue, May 5, 2009 at 7:23 PM, Ricardo <[email protected]> wrote: >> > >> > > I believe I am having this same issue. I will post all my info, >> > > hoping to help. I'm going to try Kevin's fix for now to see if it >> > > works, and if I have time, I'll also attempt to help. >> > >> > > I have a Poll that has a list of Answers. If I leave it at that, it >> > > works fine. But as soon as I add a many-to-one of an Answer has one >> > > Poll, it gives me the error that's at the bottom of this. >> > >> > > If you need anymore info, let me know. Thanks in advance. >> > >> > > I see the problem, and it looks to be the same as Kevin's. Namely, >> > > the mapping on answer has this: <many-to-one name="Poll" column="" /> >> > > hbm.xml: >> > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default- >> > > access=""> >> > > <class name="OCS.Data.Entities.BaseEntity, OCS.Data, >> > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" >> > > table="`BaseEntity`" xmlns="urn:nhibernate-mapping-2.2"> >> > > <id name="Id" type="Int32" column="Id"> >> > > <generator class="identity" /> >> > > </id> >> > > <joined-subclass name="OCS.Data.Entities.Poll, OCS.Data, >> > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"> >> > > <key column="BaseEntityId" /> >> > > <property name="Question"> >> > > <column name="Question" /> >> > > </property> >> > > <bag name="Answers"> >> > > <key /> >> > > <one-to-many class="OCS.Data.Entities.Answer, OCS.Data, >> > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> >> > > </bag> >> > > </joined-subclass> >> > > <joined-subclass name="OCS.Data.Entities.Answer, OCS.Data, >> > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"> >> > > <key column="BaseEntityId" /> >> > > <property name="Text"> >> > > <column name="Text" /> >> > > </property> >> > > <property name="Value"> >> > > <column name="Value" /> >> > > </property> >> > > <many-to-one name="Poll" column="" /> >> > > </joined-subclass> >> > > </class> >> > > </hibernate-mapping> >> > > Config: >> > > Type sessionContextType = typeof >> (Test); >> > > string contextClass = >> > > Configuration.GetConfigSetting >> > > ("current_session_context_class", >> > > sessionContextType.AssemblyQualifiedName); >> > > return Fluently.Configure() >> > >> > > .Database(MsSqlConfiguration.MsSql2005 >> > > .ConnectionString(c => >> c. >> > >> > > FromConnectionStringWithKey("OCSDB"))) >> > > .Mappings(m => >> > > m.AutoMappings.Add( >> > >> > > AutoPersistenceModel.MapEntitiesFromAssemblyOf<Answer> >> > > () >> > >> > > .Where(t => t.Namespace == "OCS.Data.Entities") >> > > ) >> > >> > > .ExportTo(@"c:\logs")) >> > > .ExposeConfiguration(c => >> > > { >> > >> > > c.SetProperty >> > > ("current_session_context_class", contextClass); >> > > >> var >> > > export = new SchemaExport(c); >> > >> > > export.Drop(false, true); >> > >> > > export.Create(false, true); >> > > }) >> > > .BuildSessionFactory(); >> > >> > > Test: >> > > [TestFixture] >> > > public class VoteTests : BaseTestFixture >> > > { >> > > [Test] >> > > public void GetVoteTotalsForAnswer() >> > > { >> > > BeginTransaction(); >> > >> > > try >> > > { >> > > var poll = new Poll(); >> > > var answer = new Answer("love", poll); >> > > poll.Answers.Add(answer); >> > > answer.Vote(); >> > >> > > FlushSession(); >> > >> > > var actualPoll = >> PollManager.Get(poll.Id); >> > >> > > Expect(actualPoll.Answers.Where(a => >> a.Value >> > > == "love").First >> > > ().GetTotalVotes(), Is.EqualTo(1)); >> > > } >> > > finally >> > > { >> > > Rollback(); >> > > } >> > > } >> > > } >> > >> > > BaseEntity: >> > > public class BaseEntity >> > > { >> > > public virtual int Id { get; set; } >> > > } >> > > Poll: >> > > public class Poll : BaseEntity >> > > { >> > > public Poll() >> > > { >> > > Answers = new List<Answer>(); >> > > } >> > >> > > public virtual IList<Answer> Answers { get; set; } >> > >> > > public virtual string Question { get; set; } >> > > } >> > >> > > Answer: >> > > public class Answer : BaseEntity >> > > { >> > > public Answer(string value, Poll poll) >> > > { >> > > Value = value; >> > > Poll = poll; >> > > } >> > >> > > public Answer() {} >> > >> > > public virtual string Text { get; set; } >> > > public virtual string Value { get; set; } >> > >> > > internal virtual int Votes { get; set; } >> > >> > > public virtual Poll Poll { get; set; } >> > >> > > public override string ToString() >> > > { >> > > return Text; >> > > } >> > > } >> > >> > > Error: >> > > VoteTests.GetVoteTotalsForAnswer : Failed >> > > key >> > > property >> > > bag >> > > key >> > > property >> > > property >> > > many-to-one >> > > id >> > > joined-subclass >> > > joined-subclass >> > > key >> > > property >> > > bag >> > > key >> > > property >> > > property >> > > many-to-one >> > > id >> > > joined-subclass >> > > joined-subclass >> > >> > > System.IndexOutOfRangeException: Index was outside the bounds of the >> > > array. >> > > at NHibernate.Mapping.Column.set_Name(String value) >> > > at NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindColumns(XmlNode node, >> > > SimpleValue model, Boolean isNullable, Boolean autoColumn, String >> > > propertyPath) >> > > at NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindManyToOne(XmlNode >> > > node, ManyToOne model, String defaultColumnName, Boolean isNullable) >> > > at NHibernate.Cfg.XmlHbmBinding.ClassBinder.PropertiesFromXML(XmlNode >> > > node, PersistentClass model) >> > > at >> > > NHibernate.Cfg.XmlHbmBinding.JoinedSubclassBinder.HandleJoinedSubclass >> > > (PersistentClass model, XmlNode subnode) >> > > at NHibernate.Cfg.XmlHbmBinding.ClassBinder.PropertiesFromXML(XmlNode >> > > node, PersistentClass model) >> > > at NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(XmlNode node, >> > > HbmClass classSchema) >> > > at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddRootClasses >> > > (XmlNode parentNode) >> > > at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(XmlNode node) >> > > at NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument >> > > doc) >> > > NHibernate.MappingException: Could not compile the mapping document: >> > > (XmlDocument) >> > > at NHibernate.Cfg.Configuration.LogAndThrow(Exception exception) >> > > at NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument >> > > doc) >> > > at NHibernate.Cfg.Configuration.ProcessMappingsQueue() >> > > at NHibernate.Cfg.Configuration.AddDocumentThroughQueue >> > > (NamedXmlDocument document) >> > > at NHibernate.Cfg.Configuration.AddXmlReader(XmlReader hbmReader, >> > > String name) >> > > at NHibernate.Cfg.Configuration.AddInputStream(Stream xmlInputStream, >> > > String name) >> > > at NHibernate.Cfg.Configuration.AddDocument(XmlDocument doc, String >> > > name) >> > > at NHibernate.Cfg.Configuration.AddDocument(XmlDocument doc) >> > > at FluentNHibernate.PersistenceModel.Configure(Configuration cfg) in >> > > PersistenceModel.cs: line 211 >> > > at FluentNHibernate.AutoMap.AutoPersistenceModel.Configure >> > > (Configuration configuration) in AutoPersistenceModel.cs: line 131 >> > > at FluentNHibernate.Cfg.AutoMappingsContainer.Apply(Configuration cfg) >> > > in AutoMappingsContainer.cs: line 70 >> > > at FluentNHibernate.Cfg.MappingConfiguration.Apply(Configuration cfg) >> > > in MappingConfiguration.cs: line 53 >> > > at FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration() in >> > > FluentConfiguration.cs: line 110 >> > > FluentNHibernate.Cfg.FluentConfigurationException: An invalid or >> > > incomplete configuration was used while creating a SessionFactory. >> > > Check PotentialReasons collection, and InnerException for more detail. >> > >> > > at FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration() in >> > > FluentConfiguration.cs: line 119 >> > > at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() in >> > > FluentConfiguration.cs: line 93 >> > > FluentNHibernate.Cfg.FluentConfigurationException: An invalid or >> > > incomplete configuration was used while creating a SessionFactory. >> > > Check PotentialReasons collection, and InnerException for more detail. >> > >> > > at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() in >> > > FluentConfiguration.cs: line 98 >> > > at OCS.Data.NHibernate.Db.CreateSessionFactory() in Db.cs: line 68 >> > > at OCS.Data.NHibernate.Db.get_SessionFactory() in Db.cs: line 27 >> > > at OCS.Web.Tests.BaseTestFixture.get_Session() in BaseTestFixture.cs: >> > > line 19 >> > > at OCS.Web.Tests.BaseTestFixture.BeginTransaction() in >> > > BaseTestFixture.cs: line 28 >> > > at OCS.Web.Tests.ModelTests.VoteTests.GetVoteTotalsForAnswer() in >> > > VoteTests.cs: line 15 >> >> >> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Fluent NHibernate" 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/fluent-nhibernate?hl=en -~----------~----~----~----~------~----~------~--~---
