Hi NHUsers,

I run into a exception when using Log4Net with NHibernate.
Note that i have found two ways to work around this:

   1. Dont call 'XmlConfigurator.Configure();' from global.asax.
   2. Remove the line '.Not.KeyNullable()' from Order class mapping.

With option 1 we lose logging. With option 2 we lose nullable.
Has anyone else encountered this problem?


Exception type: InvalidCastException.
Exception message: Unable to cast object of type 
'NHibernate.Properties.UnknownBackrefProperty' to type 'System.String'.
Exception stack trace:
at NHibernate.Type.AbstractStringType.ToString(Object val)
at NHibernate.Type.NullableType.ToLoggableString(Object value, 
ISessionFactoryImplementor factory)
at NHibernate.Impl.Printer.ToString(Object entity, EntityMode entityMode)
at NHibernate.Impl.Printer.ToString(IEnumerator enumerator, EntityMode 
entityMode)
at 
NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExecutions(FlushEvent
 
event)
at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent 
event)
at NHibernate.Impl.SessionImpl.Flush()
at NHibernate.Transaction.AdoTransaction.Commit()
at ... this is my calling code ...

Mapping:
public class OrderMap : ClassMap<Order>
{
    public OrderMap()
    {
        Table("ORDERS");

        Id(Reveal.Member<Order>("_id")).Column("ID").Length(32).Not.Nullable
();

        HasMany<OrderLine>(
            Reveal.Member<Order>("_orderLines"))
            .KeyColumn("FK_ORDER")
            .Not.KeyNullable()
            .Cascade.AllDeleteOrphan();
    }
}

public class OrderLineMap : ClassMap<OrderLine>
{
    public OrderLineMap()
    {
        // 'OrderLine' objecten worden in de 'ORDER_LINES' tabel opgeslagen
        Table("ORDER_LINES");

        // ID mappen
        Id(Reveal.Member<OrderLine>("_id"))
            .Column("ID")
            .GeneratedBy.Sequence("GEN_ORDER_LINES")
            .Not.Nullable();

        References<Product>(Reveal.Member<OrderLine>("_product"))
            .Column("FK_PRODUCT_EANCODE")
            .Not.Nullable();

        Map(Reveal.Member<OrderLine>("_quantity")).Column("QUANTITY").Not.
Nullable();
    }
}

In global.asax Application_Start:
XmlConfigurator.Configure();

Log 4 net config:
  <log4net debug="false">
    <appender name="trace" type="log4net.Appender.TraceAppender, log4net">
      <layout type="log4net.Layout.PatternLayout, log4net">
        <param name="ConversionPattern" value="[%level] %message%newline" />
      </layout>
    </appender>
    <logger name="NHibernate.SQL">
      <level value="DEBUG" />
      <appender-ref ref="trace" />
    </logger>
  </log4net>


-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.

Reply via email to