2016-06-06 6 views
1

여러 테이블에서 데이터를 가져 오기 위해 뷰 모델을 구현하려고합니다. 그러나 다음 오류가 발생합니다.MVC 6에서 뷰 모델 사용

InvalidOperationException : 엔터티 형식 'RoleManagement.Models.RolePermissionsViewModel'에 키를 정의해야합니다.

다음은 내보기 모델 LMS_RolePermissions 및 LMS_UserPermissions가 데이터베이스에 두 개의 서로 다른 테이블이

public class RolePermissionsViewModel 
{ 

    public List<LMS_RolePermissions> RolePermissions { get; set; } 
    public List<LMS_UserPermissions> UserPermissions { get; set; } 
} 

입니다. 기본적으로 뷰 모델에서이 두 테이블의 데이터를 가져 오려고합니다. 내가 코드

RolePermissionsViewModel rolemodel = new RolePermissionsViewModel 
{ 
    RolePermissions = dbContext.RolePermissions.ToList(), 
    UserPermissions = dbContext.UserPermissions.ToList() 
}; 

및 DBContext 클래스

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    protected override void OnModelCreating(ModelBuilder builder) 
    { 
     base.OnModelCreating(builder); 
    } 
    public DbSet<LMS_LocLanguage> LMS_LocLanguage { get; set; } 
    public DbSet<LMS_Permissions> Permissions { get; set; } 

    public DbSet<LMS_RolePermissions> RolePermissions { get; set; } 

    public DbSet<LMS_UserPermissions> UserPermissions { get; set; } 

    public DbSet<RolePermissionsViewModel> RoleUserPermission { get; set; } 
} 

아래 작성한 데이터를 얻으려면 내가 정의하고 테이블이 작성해서는 안됩니다 키에 싶지 않아요.

이 문제를 어떻게 해결할 수 있습니까?

답변

1

domainmodels 및 viewmodels을 별도로 배치하는 것이 좋습니다. applicationcontext의 모든 테이블은 DbSet<myclass>을 사용하거나 Dbset과 함께 사용되는 다른 클래스에서 언급 할 경우 엔티티 프레임 워크 규칙에 따라 작성됩니다. 귀하의 대답은 NotMapped 데이터 주석 및 유창한 api modelbuilder.ignore<RolePermissionsViewModel>();excluding types이어야합니다. (물론, 당신은 먼저 DbSet을 제거 할 것입니다. 올바르게 읽고 이해한다면, 당신이 설정 데이터베이스를 명령 한 후에 "제발 이걸 만들지 말아주세요"라고 말하면됩니다.)

+0

우수합니다. 도와주세요! 그게 효과가 있어요! – Rohit