MVC Storefront 코드를 통해 작업하고 있으며 저장소, 서비스 및 poco 인 모델 (dbml/data 컨텍스트 외부)의 경로를 따르려고합니다. 테스트를 작성하기 시작하기 전까지는 실제로 이해하기 쉽지 않은 방식으로 실패했습니다.IQueryable, Where, Guid 및
필자의 경우 기본 키는 int 필드 대신 uniqueidentifier입니다.
이 경우public IQueryable<Restaurant> All()
{
return from r in _context.Restaurants select new Restaurant(r.Id)
{
Name = r.Name
};
}
, 레스토랑은 물론 Models.Restaurant이며, _context.Restaurants.Restaurant하지 : 저장소가 된 IQueryable을 반환합니다. ,
이var results = Repository.All().Where(r => r.Name == "BW<3").ToList();
이 잘 작동 하나 Model.Restaurant 있습니다 모든 (대한 서비스 클래스 (또는 저장소 단위 테스트)에서
필터링)이 예상대로 작동합니다. 나는 pkid과 같은 일하려고하면 지금 : 사람들이 R => r.Id가 [모델이기 때문에이 말할 경우 일부 비슷한 게시물을 본 경우
The member 'BurningPlate.Models.Restaurant.Id' has no supported translation to SQL.
:
var results = Repository.All().Where(r => r.Id == new Guid("088ec7f4-63e8-4e3a-902f-fc6240df0a4b")).ToList();
을 실패합니다. 레스토랑]은 linq2sql 계층에서 인식하지 못하는 클래스 수준입니다. 나에게 그것은 첫 번째 버전이 작동하지 않아야 함을 의미합니다. 물론, 내 pk가 int 인 경우, 그것은 정상적으로 작동합니다.
실제로 무엇이 일어나고 있습니까? 주님은 하나의 일과 그렇지 않은 일이 매우 직관적이지는 않습니다. 내가 오해하니?
그리고 실제로 그것은 내 문제였습니다. 감사합니다 롭! – claco