update tutorial net mvc framework first español code asp c# asp.net entity-framework asp.net-mvc-5 asp.net-identity

c# - tutorial - Usuario en Entidad tipo MVC5 EF6



mvc entity framework español (2)

Creé una clase en MVC5, donde quiero un propietario principal del contenido y luego quiero tener algunos editores para el contenido:

public class Content { public int ID { get; set; } public IdentityUser Owner { get; set; } public ICollection<IdentityUser> Editors { get; set; } public string Title{ get; set; } public string Body { get; set; } }

En el contexto de la base de datos, tengo el siguiente código:

protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<Content>() .HasOptional(c => c.Editors) .WithRequired() .WillCascadeOnDelete(); modelBuilder.Entity<Content>() .HasRequired(c => c.Owner) .WithOptional() .WillCascadeOnDelete(); }

Esperaría que Microsoft hubiera implementado el objeto IdentityUser de tal manera que se pueda usar en otros tipos de entidades, así que probablemente estoy haciendo algo mal, porque cuando intento crear un controlador para el tipo de entidad Content, obtengo el siguiente error:

EntityType ''IdentityUserLogin'' has no key defined EntityType ''IdentityUserRole'' has no key defined EntityType: EntitySet ''IdentityUserLogins'' is based on type ''IdentityUserLogin'' that has no key defined EntityType: EntitySet ''IdentityUserRoles'' is based on type ''IdentityUserRole'' that has no key defined

También intenté agregar el siguiente código al ApplicationDbContext como se describe en esta pregunta. ¿ Mapa de tablas utilizando una API fluida en asp.net MVC5 EF6? :

protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId); modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id); modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId }); }

Debo estar haciendo algo mal. Por favor dígame cómo puedo manejar usuarios en mi EntityType de contenido.


El siguiente método, OnModelCreating , creará un contexto de trabajo. Sin embargo, no estoy seguro de si es la asignación que desea.

protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<Content>() .HasMany(c => c.Editors) .WithOptional() .WillCascadeOnDelete(false); modelBuilder.Entity<Content>() .HasRequired(c => c.Owner) .WithOptional() .WillCascadeOnDelete(false); modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId); modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id); modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId }); }


Tuve el mismo problema y descubrí que no había llamado

base.OnModelCreating(modelBuilder);

en mi DbModel