Не признают несколько наборов объектов типом ошибку, использовав EF, после добавляя таблицу под Identity

Я добавил таблицу под Identity: Запрос, я это протестировал и оно функционировало хорошо. Потом я создал драйвер с совещаниями автоматического способа используя EF и сейчас выходит сообщение ошибки:

Не допускаются несколько наборов объектов типом. Наборы объектов 'ApplicationUsers' и 'Users' могут содержать инстанции типа 'PruebaHG.Models. ApplicationUser'. Описание: Исключение, не контролируемое, выполнив Веб настоящий запрос. Проверьте следование батарейки, чтобы получать больше информации относительно ошибки, и где он породился в коде.

Детали исключения: System. InvalidOperationException: Не допускаются несколько наборов объектов типом. Наборы объектов 'ApplicationUsers' и 'Users' могут содержать инстанции типа 'PruebaHG.Models. ApplicationUser'.

Ошибка исходного кода:

Произвелось исключение, не контролируемое в течение выполнения Веб настоящего запроса. Информация об источнике и расположении исключения они могут идентифицироваться используя исключение следования следующей батарейки.

Следование батарейки:

[InvalidOperationException: No se admiten varios conjuntos de objetos por tipo. Los conjuntos de objetos 'ApplicationUsers' y 'Users' pueden contener instancias de tipo 'PruebaHG.Models.ApplicationUser'.]
   System.Data.Entity.Internal.DbSetDiscoveryService.RegisterSets(DbModelBuilder modelBuilder) +456
   System.Data.Entity.Internal.LazyInternalContext.CreateModelBuilder() +360
   System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext) +128
   System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input) +123
   System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +616
   System.Data.Entity.Internal.InternalContext.Initialize() +21
   System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +15
   System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +53
   System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() +16
   System.Data.Entity.Internal.Linq.InternalSet`1.FindAsync(CancellationToken cancellationToken, Object[] keyValues) +53
   System.Data.Entity.DbSet`1.FindAsync(CancellationToken cancellationToken, Object[] keyValues) +35
   System.Data.Entity.DbSet`1.FindAsync(Object[] keyValues) +26
   Microsoft.AspNet.Identity.EntityFramework.EntityStore`1.GetByIdAsync(Object id) +49
   Microsoft.AspNet.Identity.EntityFramework.<GetUserAggregateAsync>d__67.MoveNext() +136
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.AspNet.Identity.CultureAwaiter`1.GetResult() +59
   Microsoft.AspNet.Identity.Owin.<<OnValidateIdentity>b__0>d.MoveNext() +789
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +25
   Microsoft.Owin.Security.Cookies.<AuthenticateCoreAsync>d__2.MoveNext() +2200
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.Owin.Security.Infrastructure.<BaseInitializeAsync>d__0.MoveNext() +571
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.Owin.Security.Infrastructure.<Invoke>d__0.MoveNext() +255
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.AspNet.Identity.Owin.<Invoke>d__5.MoveNext() +383
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.AspNet.Identity.Owin.<Invoke>d__5.MoveNext() +383
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.AspNet.Identity.Owin.<Invoke>d__5.MoveNext() +383
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.<RunApp>d__5.MoveNext() +182
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.<DoFinalWork>d__2.MoveNext() +180
   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult.End(IAsyncResult ar) +69
   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork(IAsyncResult ar) +64
   System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +380
   System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +48

Я искал где-то здесь, но мне не может казаться что-то дублированным.

public class ApplicationUser : IdentityUser
{
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
    {
        // Tenga en cuenta que el valor de authenticationType debe coincidir con el definido en CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        // Agregar aquí notificaciones personalizadas de usuario
        return userIdentity;
    }

    public virtual List<Solicitud> Solicitudes { get; set; }
}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Solicitud>()
            .HasRequired(x => x.Usuario)
            .WithMany(x => x.Solicitudes)
            .HasForeignKey(x => x.Id)
            .WillCascadeOnDelete(true);

        base.OnModelCreating(modelBuilder);

    }

    public System.Data.Entity.DbSet<PruebaHG.Models.Solicitud> Solicituds { get; set; }

    public System.Data.Entity.DbSet<PruebaHG.Models.ApplicationUser> ApplicationUsers { get; set; }

}

Класс Запрос

public class Solicitud
    {
        [Key]
        public int IdSolicitud { get; set; }
        public DateTime FechaYHora { get; set; }
        public String Tipo { get; set; }
        public bool AprobadoPorRH { get; set; }
        public bool AprobadoPorJefe { get; set; }

        public String Id { get; set; }
        public virtual ApplicationUser Usuario { get; set; }
    }
2
задан 25.03.2019, 01:19
1 ответ

Эта ошибка я ocurriГі despuГ©s использования scaffolding с организацией ApplicationUser, этим благодаря тому, что agregГі следующая линия в DbContext в то время как IdentityDbContext уже осуществляет ее:

public System.Data.Entity.DbSet<PruebaHG.Models.ApplicationUser> ApplicationUsers { get; set; }

, Чтобы решать ошибку, должно быть, удаляет линию, добавленную автоматически scaffold

Кредитов: denifer santiago fernandez

2
ответ дан 02.12.2019, 05:07
  • 1
    Хорошая работа conviertiendolo в ответе – denifer santiago fernandez 09.06.2019, 08:14

Теги

Похожие вопросы