2014-02-06 2 views
0

WebApi 2 기본 프로젝트에서 'ApplicationContext'를 찾는 데 어려움이 있습니다. MVC5 응용 프로그램에서의 Web.config에 정의 된 ConnectionString을 사용의 ApplicationContext라는 모델의 클래스가있다 :Webapi 2 ApplicationContext가 누락되었습니다.

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

쉬운 그러나 DbSets을 추가하고 MVC5 웹 페이지 프로젝트에서 하나의 맥락에서 모든 데이터를 가지고하는 webapi 2 프로젝트에서이 클래스를 찾을 수 없습니다.

WebApi 프로젝트의 어딘가에 DbContext 또는 IdentityDbContext를 확장하는 클래스가 있어야하며 연결 ​​문자열을 사용하지만 전체 프로젝트를 검색했지만 찾을 수 없습니다. 모든 계정 데이터 (사용자 이름, 암호 해시, 역할, externallogins 등) 및 기타 모든 데이터 (DbSets)가 정의 된 webapi 2 프로젝트에 응용 프로그램 전체 DbContext를 가질 수 있습니까?

UserManager 클래스가 ApiController에있는 것처럼 보입니다.하지만 내 사용자 정의 데이터를 추가하는 방법은 없습니다.

답변

1

ApplicationDbContext 클래스는 프레임 워크의 일부가 아니므로 직접 추가해야합니다. 템플릿에 포함되지 않은 경우 코드 스 니펫 에서처럼 쉽게 직접 추가 할 수 있습니다. 귀하의 경우에는 IdentityDbContext에서 파생 된 컨텍스트를 만들고이 컨텍스트는 DbContext에서 파생됩니다. 이 컨텍스트에서 사용자 지정 DbSet의을 추가 할 수 있습니다. 이 컨텍스트를 만드는 데 어려움이 있다면 기존 MVC5 프로젝트 (이미 가지고 있다고 생각하는 프로젝트)에서 웹 API 프로젝트로 복사하십시오.

오류가 있으면 프로젝트에 적절한 NuGet 참조가 있는지 확인하십시오. 특히 Entity Framework에서 ASP.NET ID를 구현해야합니다.

+0

그러나 IdentityUser에 대해 [Required] 및 [StringLength] 속성을 어떻게 설정 할 수 있습니까? 새로 만든 ApplicationContext에 DbSet Users를 추가하고 EntityTypeConfigurations를 사용하여 Required 및 Stringlength 특성을 구성하려고했지만이 오류가 발생했습니다. 형식 당 여러 개체 집합이 지원되지 않습니다. 개체 집합 'Users'와 'Users'에는 모두 'Applicationuser'(IdentityUser 확장) 유형의 인스턴스가 포함될 수 있습니다. 그래서 지금은 nulls가 허용되고 사용자 이름 길이 (bindingmodel 제외)에 대한 제한이없는 데이터베이스가 남아 있습니다. – neo112

+0

* IdentityUser * 구현에 * DbSet *을 추가 할 필요가 없습니다. 그것이이 오류 메시지를받는 이유입니다. * null * 값은 확실히 문제이지만 이미 좋은 해결 방법을 언급했다. 뷰/바인딩 모델에 속성을 설정한다. 올바르게 조작하면 API의 사용자가 길이가 f.e. 인 사용자 이름을 삽입 할 수 없습니다. 30 자입니다. –

관련 문제