Errores en relaciones muchos-muchos
<< Seguimos con ASP.NET+MVC / we continue with ASP.NET+MVC
A veces, cuando creas una aplicación web con tablas "puente" para definir relaciones N:N (muchos a muchos), aparecen algunos errores, en mi caso han aparecido estos dos:
- No se pueden enlazar las entidades porque, simplemente, no aparecen
- La columna ID1 no existe
Para el primero, hay que asegurarse que la colección IEnumerable sea pública. Un error que puede pasar por distracción al hacer a veces las cosas mecánicamente).
Para el segundo hay que mover un poquito los alambres con el siguiente código (Pongamos el siguiente ejemplo: Usuario-AreaGym-Area; asumiendo que ya existe una base de datos).
public class Usuario {
[Required, Key, Column("Id")]
public int IDUsuario { get; set; }
// más campos ...
public IEnumerable AreaGyms { get; set; }
}
public class Area {
[Required, Key, Column ("Id")]
public int IDArea { get; set; }
// más campos ...
public IEnumerable AreaGyms { get; set; }
}
public class AreaGym{
[Required, Column("IdUsuario")]
public int UsuarioID{ get; set; }
[ForeignKey("UsuarioID")]
public Usuario Usuario { get; set; }
[Required, Column("IdArea")]
public int AreaID{ get; set; }
[ForeignKey("AreaID")]
public Area Area { get; set; }
}
Donde Required indica que es un campo obligatorio, Key dice que se trata de un campo clave primaria, Column asocia la propiedad con el campo definido en la base de datos y ForeginKey indica cuál propiedad se va a utilizar como llave foranea.
Some times, when you create a web app with "bridge" tables to define N:N relationships (Many-to-many), appears som errors, in my case have appeared this two:
- Cann't link the entities because, simply, they don't appear.
- The column ID1 not exists.
For he first, should ensure that the collection IEnumerable is public. An error that can occurs by distraction when you do things mechanically.
For the second, must move a little bit the wires with the following code (let's put the following example: User-GymArea-Area; assumming that exists a data base).
public class User{
[Required, Key, Column("Id")]
public int IDUser { get; set; }
// more fields ...
public IEnumerable GymAreas { get; set; }
}
public class Area {
[Required, Key, Column ("Id")]
public int IDArea { get; set; }
// more fields ...
public IEnumerable GymAreas { get; set; }
}
public class GymArea{
[Required, Column("IdUser")]
public int UserID{ get; set; }
[ForeignKey("UserID")]
public User User { get; set; }
[Required, Column("IdArea")]
public int AreaID{ get; set; }
[ForeignKey("AreaID")]
public Area Area { get; set; }
}
Where Required indicates that is a required field, Key says that is a primary key field, Column asociates the property with the defined field in the database and ForeginKey indicates which property will be used as foreign key.
Buen aporte amigo xD
ResponderBorrar