I'm using Fluent NHibernate to map my classes, and I have the following situation:
UserMap class
public class UsuarioMap : ClassMap<Usuario>
{
public UsuarioMap()
{
Table("USUARIOS");
Id(x => x.ID, "USUARIO_ID").GeneratedBy.Increment();
//Comentado para evitar código desnecessário
References(x => x.Proprietario).Columns("PROPRIETARIO_ID", "SERVIDOR_ID");
}
}
ProprietaryMap class:
public class ProprietarioMap : ClassMap<Proprietario>
{
public ProprietarioMap()
{
ReadOnly();
Table("PROPRIETARIOS");
CompositeId().
KeyProperty(x => x.ID, "PROPRIETARIO_ID").
KeyProperty(x => x.ServidorId, "SERVIDOR_ID");
Id(x => x.ID, "PROPRIETARIO_ID").GeneratedBy.Assigned();
//Comentado para evitar código desnecessário
}
}
When trying to save a Usuario
, I get a ArgumentOutOfRangeException
. The object that I try to save is as follows:
var usuario = new Usuario
{
Proprietario = new Proprietario { ID = 1497196, ServidorId = 2 }
// Comentado para evitar código desnecessário
};
It's interesting that if I create a ProprietarioID
property in the Usuario
class and map it, the object is saved without any problems.
What am I doing wrong? Is mapping a composite entity to a single entity correct?