fluently - nhibernate c#
Fluidez en el mapa de NHibernate HasManyToMany() (1)
En cuanto al código que estoy usando en mi proyecto, definiría sus muchas relaciones con Túnez de esta manera:
public UsersMap()
{
...
HasManyToMany(x => x.Roles)
.WithTableName("UserInRoles")
.WithParentKeyColumn("Usernamepk")
.WithChildKeyColumn("RoleIdpk");
}
public RolesMap()
{
...
HasManyToMany(x => x.Users)
.WithTableName("UserInRoles")
.WithParentKeyColumn("RoleIdpk")
.WithChildKeyColumn("Usernamepk");
}
Tal definición funciona para mí. Verifique esto primero y luego decore con LazyLoading y algunas otras propiedades.
Tengo un problema en el ejemplo de Fluiber NHibernate que utiliza las relaciones de Muchos a Muchos. Traté de encontrar ejemplos en un caso similar, y encontré toneladas, pero sigo teniendo el mismo problema.
Al ejecutar el proyecto de prueba, se lanza la siguiente excepción:
NHibernate.PropertyAccessException: se produjo la excepción getter de project.Entities.User.UserName ---> System.Reflection.TargetException: el objeto no coincide con el tipo de destino.
Esta es una imagen de las tablas:
y el código
public UsersMap()
{
this.Table("Users");
Id(x => x.UserName).Column("Username").GeneratedBy.Assigned();
Map(x => x.FirstName);
Map(x => x.LastName);
Map(x => x.Password);
Map(x =>x.EMail);
Map(x => x.Title);
Map(x => x.Division);
HasManyToMany<User>(x => x.Roles)
.Table("UserInRoles").ParentKeyColumn("Username")
.ChildKeyColumn("Usernamepk")
.Cascade.SaveUpdate().LazyLoad();
}
public RolesMap()
{
this.Table("Roles");
Id(x => x.ID).GeneratedBy.Assigned().Column("ID");
Map(x => x.RoleName).Length(50);
HasManyToMany<User>(x => x.Users)
.Table("UserInRoles").ParentKeyColumn("ID")
.ChildKeyColumn("RoleIdpk").Cascade.SaveUpdate().LazyLoad();
}
aquí está el código, la mayoría de los ejemplos en la web y la página de asignaciones de Fluent Nhibernate están escritas de la misma manera, ¿así que cualquier idea?