2017-01-24 12 views
1

私のアプリでASP.NET IDを使用するとエラーが発生しました。タイプごとに複数のオブジェクトセット はサポートされていません。オブジェクトセット 'ApplicationRoles'と 'Roles'には、両方ともタイプ 'XXX.Identity.ApplicationRole'のインスタンスが含まれます。ASP.NET ID - 種類ごとに複数のオブジェクトセット

このエラーについては、stackoverflowでいくつか確認しました。すべて同じ型の2つのDbSetオブジェクト上にあることを示します。しかし、私のDbContextには、同じタイプのDbSetsはありません。私は自動移行を有効にしたいときにスローで

例外は

私のコンテキストは、そのようになりますがあるかもしれないあなたのIdentityDbContextで

public class XXXDbContext : 
     IdentityDbContext<ApplicationUser, ApplicationRole, int, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim> 
    { 
    public override IDbSet<ApplicationUser> Users { get; set; } 
    public DbSet<ApplicationUserLogin> ApplicationUserLogins { get; set; } 
    public DbSet<ApplicationUserRole> ApplicationUserRoles { get; set; } 
    public DbSet<ApplicationUserClaim> AppApplicationUserClaims { get; set; 
    public DbSet<ApplicationRole> ApplicationRoles { get; set; } 
    public DbSet<ApplicationAction> ApplicationActions { get; set; } 
    public DbSet<ApplicationActionRole> ApplicationActionRoles { get; set; } 
} 
+0

はあなたが同じテーブルにバインドされた2つのエンティティを持っているか、次のように、データベース内の独自のテーブルに識別クラスを指し、必要に応じて機能を拡張することができますか?例えばApplicationUserRoleとApplicationRole – Yaser

+0

IdentityDBContextで使用されるデフォルトのテーブルをオーバーライドしようとしていますか? – Mike

+0

はい私はそれらを無効にしたい – MohammadMahdi

答えて

1

チェックは、ApplicationRolesはすでに定義し、それは以下のようになります。

public System.Data.Entity.DbSet<ApplicationRoles> Roles{ get; set; } 

これを削除します。このエラーは、ApplicationRolesがXXXcontext ...で再度宣言している間に発生します。

1

よりもむしろそれらをオーバーライドし、あなたは

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 
    // Map Entities to their tables. 
    modelBuilder.Entity<MyUser>().ToTable("Users"); 

    // Set AutoIncrement-Properties 
    modelBuilder.Entity<MyUser>().Property(r => r.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 

    // Override some column mappings that do not match our default 
    modelBuilder.Entity<MyUser>().Property(r => r.UserName).HasColumnName("username"); 
    modelBuilder.Entity<MyUser>().Property(r => r.PasswordHash).HasColumnName("password"); 
    modelBuilder.Entity<MyUser>().Property(r => r.Id).HasColumnName("lgn_key"); 
    modelBuilder.Entity<MyUser>().Property(r => r.Email).HasColumnName("primaryEmail"); 
} 
関連する問題