En primer lugar, Tengo la siguiente tabla:Fluido NHibernate - Ahorro Entidad con clave compuesta
CREATE TABLE CustomerHub (
CustomerId INT NOT NULL,
HubId INT NOT NULL
)
Qué he asignado a la entidad:
public class CustomerHub
{
public int CustomerId {get;set;}
public int HubId {get;set}
//GetHashCode, Equals, Etc...
}
El uso de este mapeo:
public class CustomerHubMap : ClassMap<CustomerHub>
{
UseCompositeId()
.WithKeyProperty(x => x.CustomerId)
.WithKeyProperty(x => x.HubId);
}
El problema que tengo es que cuando creo una nueva entidad de tipo CustomerHub e intento guardarla, no se conserva nada a la base de datos. Puedo recuperar todo bien, simplemente no guardarlos. Por ejemplo:
//this will work
var x = session.CreateCriteria(typeof(CustomerHub));
//this will not
using (var trans = session.BeginTransaction())
{
var custHub = new CustomerHub {CustomerId = 293, HubId = 1193};
var y = session.SaveOrUpdate(custHub);
trans.Commit();
}
Lo curioso es que no se lanzan excepciones, simplemente no hace nada. Inicié NH Profiler (¡excelente herramienta!) Y parece que no está emitiendo ningún tipo de comando de inserción a la base de datos.
¿Pensamientos?
Nota: Me doy cuenta de que esta tabla se parece mucho a una tabla de unión (porque técnicamente lo es) y sería una relación ManyToMany en otra entidad como Cliente ... pero debido a un diseño de datos extremadamente confuso (es decir, sin tabla de Hub) es mucho más simple asignar la tabla de unión a una entidad y trabajar con ella de esa manera.
Gracias por la respuesta rápida. En aras de la brevedad lo dejé, pero tengo todas mis llamadas en un código muy similar a su segundo ejemplo.También probé el color sin suerte. – jckeyes
actualización agregada. No estaba seguro de lo de SaveOrUpdate, así que estaba esperando a ver si funcionaba o no: p – anonymous
Hace poco estaba leyendo la sección sobre cómo funciona SaveOrUpdate y no estaba claro cómo manejaría la identificación compuesta ... que es Probablemente por qué simplemente ni siquiera lo intentan. – anonymous