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 fluent-nhibernate@googlegroups.com
To unsubscribe from this group, send email to 
fluent-nhibernate+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/fluent-nhibernate?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to