2016-06-17 2 views
2

Entity Framework 7 RC1 Code First을 사용하고 있습니다.클래스를 저장 프로 시저 resultset에 매핑합니다. "값은 null 일 수 없습니다. 매개 변수 이름 : entityType"

는 다음 코드이 작동하고 데이터를 올바르게 가져

var resultset = await _db.Employees.FromSql<Employee>("dbo.sp_GetEmployees @DeptId="+ deptId).ToListAsync(); 

에게 있습니다.

그러나 직원이 반환하는 것보다 다른 속성을 포함하도록 저장된 proc을 변경해야합니다.

그래서 저장 프로 시저를 조정하고 Employee에서 추가 속성을 상속 한 사용자 지정 클래스 EmployeeQuery을 만듭니다.

그러나 FromSql이

public DbSet<EmployeeQuery> EmployeeQueryItems{ get; set; } 

및 VAR없는 결과를 만들어 내가 EmployeeQuery에 대해 동일한 작업을 수행 할 수 있습니다 내 DBContext

public DbSet<Employee> Employees{ get; set; } 

DbSet의 방법이다 = _db.EmployeeQueryItems.FromSql을 기다리고 있습니다 ("dbo.sp_GetEmployees @DeptId ="+ deptId) .ToListAsync();

그러나 이것은 DBSet 속성을 만들면 데이터베이스에 테이블을 만들기 위해 Entity Framework에 알려주며 단순히 쿼리 개체 일뿐입니다. 그래서 나는 위의 것을하고 싶지 않습니다. 그래서 var에 결과 집합에 코드를 변경 github에서이 answer

에서 언급 한 바와 같이

그러나 분명히 당신이 DbContext 설정 방법을 사용할 수 있습니다 = _db.Set(). FromSql을 (기다리고 있습니다 "dbo.sp_GetEmployees @DeptId = "+ deptId) .ToListAsync();

그러나이 나에게 런타임 오류

전 = { "값은 null 일 수 없습니다를 \ 연구 \ 이름 nParameter. : entityType"} 제공

나는이 문제를 어떻게받을 수 있나요?

gitbub issue에서 더미 테이블을 만들지 않으면 불가능한 것처럼 보입니다.

EF에서 테이블을 만들지 않도록 지시 할 방법이 없습니까? DbSetNotMapped 속성이 있습니까?

답변

2

나는이 문제를 직접 해결했으며 문제를 해결할 수있는 유일한 방법은 POCO의 키를 매핑하는 것이 었습니다.

측면을 따라 부분적 클래스

생성 된 컨텍스트는 I OnModelCreating을 무시하고 추가

modelBuilder.Entity<ClassName>(entity => entity.HasKey(e => e.Id)); 

가 EntityFramework 만족 보인다.

+0

확대 해 주시겠습니까?user.Id이 동일에 context.Employees에서 공공 JsonResult EmployeeUserRead() { 'var에 결과 = ( 은 EMP에 가입 appContext.Users에서 사용자로부터 : 은 그래서 MVC 컨트롤러에서 나는 방법 돌아 이런 일이있을 수 있습니다 emp.UserId 새 {user, emp} 선택). ToList(); return Json (결과); }' modelBuilder가 재생되는 부분이 보이지 않습니까 ?? –

관련 문제