Clave foránea para Microsoft.AspNet.Identity.EntityFramework.IdentityUser?
Estoy en VS 2013 y acabo de crear una aplicación MVC.
Estoy creando un objeto que pretendo tener una clave externa para la tabla AspNetUsers en la base de datos resultante. El proyecto tiene un ApplicationUser (derivado de IdentityUser) que se parece a una coincidencia de columna de propiedad con la tabla AspNetUsers.
¿Cómo declaramos adecuadamente una clave foránea para esto?
public MyObject
{
public string UserId { get; set; }
[ForeignKey("UserId")]
public ApplicationUser User { get; set;}
// other properties
}
Ahora, modifico ApplicationUser para tener una colección de MyObjects:
public ApplicationUser : IdentityUser
{
public virtual ICollection<MyObject> MyObjects { get; set; }
}
Esto parece ser cómo hacer uno a muchos en el Código EF primero. Sin embargo, cuando actualizo la base de datos, recibo los errores que dicen que los miembros de Identity (IdentityUserLogin, IdentityUserRole, etc.) no tienen claves definidas. ¿Quizás esas clases no estaban destinadas a participar en el Código EF Primeras migraciones?
Podría ir "al fondo" y agregar la clave externa a través de sentencias de SQL, pero si quisiera actualizar de nuevo desde Code First, podría obtener errores (que la base de datos no coincide con la migración anterior o algo así).
¿Cómo hacemos correctamente la referencia externa a esas tablas de membresía?
También intenté crear una clase AspNetUser con propiedades coincidentes de la tabla AspNetUsers. En lugar de "public ApplicationUser" en la clase de cliente, declaré "public AspNetUser". Al hacerlo, se produjo un error de migración: "La migración automática no se aplicó porque provocaría la pérdida de datos".
¿Entonces lo que hay que hacer?