IdentityDBContext를 확장하여 테이블 이름의 이름을 바꾸었지만 사용자와 역할간에 많은 관계를 잃어버린 것처럼 보입니다. LINQ는 더 이상 올바른 관계를 따기되지 않는다 (추신 intellisence 스크린 샷 참조)에 대한 답변으로 1ID 테이블의 이름 바꾸기 및 관계 유지 관리
제안
namespace Carbon.Models {
public partial class CarbonEDM : IdentityDbContext<User, Role, string, IdentityUserLogin, IdentityUserRole, IdentityUserClaim>{
public CarbonEDM()
: base("name=CarbonDB") {
}
public DbSet<Message> Messages { get; set; }
public static CarbonEDM Create() {
return new CarbonEDM();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>().ToTable("Users", "dbo");
modelBuilder.Entity<Role>().ToTable("Roles", "dbo");
modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles", "dbo") ;
modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims", "dbo");
modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogins", "dbo");
}
}
}
업데이트, 신원에는 탐색 속성이 없습니다 역할 모델, 그래서 나는 다음 시도 :
var users = from usr in db.Users
select new UserInfoViewModel{
email = usr.Email,
name = usr.Name,
role_name = db.Roles.Find(usr.Roles.FirstOrDefault().RoleId).Name
};
하지만 여전히 IM gettin 다른 오류 : Method 'Carbon.Models.Role Find(System.Object[])' declared on type 'System.Data.Entity.IDbSet
1 Carbon.Models.Role] '타입의 인스턴스를 호출 할 수 없습니다'System.Data.Entity.Core.Objects.ObjectQuery 1[Carbon.Models.Role]
난 그냥 모든 사용자의 목록을 얻으려면 그리고 그들의 역할.
'UserInfoViewModel'모양이 어떻게됩니까? 이것은'users'의 일반 argumnet 유형입니다 (컴파일러에서 유형을 알려주도록 VS에서 마우스를 가리킬 수도 있습니다). – ryanyuyu