클레임을 그룹화하여 AspNet ID를 확장하려고합니다. 새로운 QueryAppGroup 엔티티로이 작업을 수행하고 있습니다. 특정 그룹의 클레임을 모두 삭제할 수있게하려면 &을 추가하고 싶습니다. 그래서 여기 내 계획입니다 추가 괜찮했지만, 난 (ID로 예) 특정 주장을 제거하는 방법을 찾을 수 있습니다클래스를 인터페이스로 변환 할 수 없습니다.
가 IdentityUserClaim은 한 - 투 - 제로가되도록 QueryAppGroupClaim라는 중간 엔티티를 생성 또는 그것과의 관계.
특정 QueryAppGroupClaim 엔티티를 삭제하면 삭제가 IdentityUserClaim과 연계되어야합니다.
- 이 작업을 수행하기 위해, 나는 (ApplicationUserClaim 참조) QueryAppGroupClaim에 다시 탐색 속성 IdentityUserClaim을 확장 할 필요가
코드 :
public class ApplicationUserClaim : IdentityUserClaim<string>
{
[ForeignKey("QueryAppGroupClaim")]
public virtual int QueryAppGroupClaimId { get; set; }
public virtual QueryAppGroupClaim QueryAppGroupClaim { get; set; }
}
public class QueryAppGroup
{
public QueryAppGroup()
{
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[ForeignKey("ApplicationUser")]
public String UserId { get; set; }
public String Desc { get; set; }
public String ImpersonateClaimType { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}
public class QueryAppGroupClaim
{
public QueryAppGroupClaim()
{ }
[Key, ForeignKey("IdentityUserClaim")]
public int ClaimId { get; set; }
public virtual ApplicationUserClaim IdentityUserClaim { get; set; }
[ForeignKey("QueryAppGroup")]
public int QueryAppGroupId { get; set; }
public virtual QueryAppGroup QueryAppGroup { get; set; }
}
public class ApplicationUser : IdentityUser<string, IdentityUserLogin, IdentityUserRole, ApplicationUserClaim>, IUser, IUser<string>
{
//...
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, IdentityRole, string, IdentityUserLogin, IdentityUserRole, ApplicationUserClaim>
{
//...
public DbSet<QueryAppGroup> QueryAppGroups { get; set; }
public DbSet<QueryAppGroupClaim> QueryAppGroupClaims { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ApplicationUserClaim>()
.HasOptional(t => t.QueryAppGroupClaim)
.WithRequired(t => t.IdentityUserClaim)
.WillCascadeOnDelete();
}
}
public class ApplicationUserStore : UserStore<ApplicationUser,IdentityRole,string, IdentityUserLogin, IdentityUserRole, ApplicationUserClaim>
{
//...
//Already exists with an override of RemoveClaimAsync(...)
}
public class ApplicationUserManager : UserManager<ApplicationUser>
{
public ApplicationUserManager(IUserStore<ApplicationUser> store)
: base(store)
{
}
public ApplicationUserManager(ApplicationUserStore store)
: base(store)
{
}
//...
}
내가 public ApplicationUserManager(ApplicationUserStore store) : base(store)
때와 compiliation 오류를 받고 있어요 Argument 1: cannot convert from 'ApplicationUserStore' to 'Microsoft.AspNet.Identity.IUserStore<ApplicationUser>'
라고하는 기본 생성자를 호출합니다. 내 클래스 ApplicationUserStore는 UserStore를 확장합니다.이 자체는 여러 인터페이스를 구현하며 하나는 IUserStore입니다. 이 문제를 해결하는 방법을 볼 수 없습니다. 도와주세요.
주요 목표를 쉽게하기위한 제안도 환영합니다!
안녕 스콧,'IUserStore는'에서'ApplicationUserStore'이 문제를 해결 구현 했습니까? 아직 문제가있는 경우 다른 아이디어가 있습니다. –
Peter
예, 이것이 제대로 작동하여 내 모델을 조정할 수있어서 내 앱이 예상대로 작동합니다. 감사합니다! –