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