Antes me tiro a mi equipo en la próxima semana ...NHibernate.AssertionFailure: identificador nulo
he comprobado todos los demás consulta sobre este, pero ninguno de ellos tiene la solución. Deshizo este código, pero todavía no funciona.
estoy consiguiendo este error al guardar un objeto: NHibernate.AssertionFailure: identificador nulo
Este es mi archivo de asignación:
public class OrderMap : BaseMap<Order>
{
public SalesOrderMap()
{
Id(x => x.Id).Column("OrderId");
}
}
Ésta es la entidad:
public class Order
{
public virtual int Id { get; protected set; }
}
Este es mi código de prueba:
Order order = new Order();
ISession session = SessionFactory.GetCurrentSession();
session.SaveOrUpdate(order); <----EXCEPTION ON THIS LINE
session.Flush();
Y luego golpear ... Rompe con
[AssertionFailure: null identifier]
NHibernate.Engine.EntityKey..ctor(Object identifier, String rootEntityName, String entityName, IType identifierType, Boolean batchLoadable, ISessionFactoryImplementor factory, EntityMode entityMode) +135
NHibernate.Engine.EntityKey..ctor(Object id, IEntityPersister persister, EntityMode entityMode) +70
NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrReplicate(Object entity, EntityKey key, IEntityPersister persister, Boolean useIdentityColumn, Object anything, IEventSource source, Boolean requiresImmediateIdAccess) +545
NHibernate.Event.Default.AbstractSaveEventListener.PerformSave(Object entity, Object id, IEntityPersister persister, Boolean useIdentityColumn, Object anything, IEventSource source, Boolean requiresImmediateIdAccess) +322
NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object entity, String entityName, Object anything, IEventSource source, Boolean requiresImmediateIdAccess) +130
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent event) +27
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent event) +63
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent event) +89
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent event) +188
NHibernate.Impl.SessionImpl.FireSaveOrUpdate(SaveOrUpdateEvent event) +259
NHibernate.Impl.SessionImpl.SaveOrUpdate(Object obj) +256
si alguien está interesado, así es como se construye la fábrica de sesión:
ControllerSource.SessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(DataConfig.ConnectionString))
.Mappings(x => x.FluentMappings.Add(typeof (OrderMap)))
.ExposeConfiguration(c =>{
c.SetProperty("generate_statistics", "false");
c.SetProperty("current_session_context_class", contextClass);
c.SetProperty("cache.use_second_level_cache", "false");
c.SetProperty("cache.use_query_cache", "false");
c.SetProperty("connection.release_mode", "on_close");
})
.BuildSessionFactory();
¿Se puede publicar el script de creación para la tabla de pedidos? – twaggs
Actualmente solo hay una tabla con el campo en, incremento automático, int, no anulable – Paul
(creo que he sido un poco pillock ........) – Paul