Supongamos que tengo las dos clases siguientes:evitar especificar la columna clave en el doble escenario relacionado
public class User : Entity
{
public virtual IList<Item> Items { get; set; }
}
public class Item : Entity
{
public virtual User Owner { get; set; }
}
he creado dos clases de asignación:
public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.Id);
HasMany(x => x.Items);
}
}
public class ItemMap : ClassMap<Item>
{
public ItemMap()
{
Id(x => x.Id);
References(x => x.Owner);
}
}
esto se traducirá en una mesa Item
que tiene una columna UserId
y una columna OwnerId
. Cuando uso KeyColumn("OwnerId")
en la asignación HasMany
, funciona solo con la columna OwnerId
, pero me gustaría evitar eso. ¿Hay alguna manera de decirle a NHibernate que use la columna creada por la asignación en ItemMap
?
por eso que quiero evitar especificar explícitamente la columna:
automáticamente se genera el nombre de la columna OwnerId
basado en el nombre de la propiedad y algunas reglas. Si cambio las reglas o el nombre de la propiedad, también debo recordar cambiar KeyColumn
. Entonces, básicamente, no se trata de refactorizar guardar.
¿Se puede cambiar el nombre de la propiedad a Usuario? usuario virtual de usuario público {get; conjunto; }. Tendría que cambiar su asignación de referencias también, por supuesto, –
@ColeW: Bueno, cambiar la propiedad a Usuario obviamente arreglaría eso, pero el nombre de la propiedad no sería tan bueno como lo es ahora. –
Estoy de acuerdo, pero no creo que haya una forma clara de hacer lo que está pidiendo de otra manera. –