2012-10-05 4 views
1

나는 쿼리가 :법인 Framwork LINQ 쿼리는

SELECT 
    `Filter1`.`id`, 
    `Filter1`.`account_id`, 
    `Filter1`.`camera_site_id`, 
    `Filter1`.`enabled`, 
    `Filter1`.`name`, 
    ..., 
    `Filter1`.`name` AS `name1`, 
    `Extent3`.`name` AS `name2` 

    FROM (SELECT 
    `Extent1`.`id`, 
    `Extent1`.`account_id`, 
    `Extent1`.`camera_site_id`, 
    `Extent1`.`enabled`, 
    `Extent1`.`name`, 
    ..., 
    `Extent2`.`id` AS `id1`, 
    `Extent2`.`account_id` AS `account_id1`, 
    `Extent2`.`server_id`, 
    ... 
    FROM `cameras` AS `Extent1` INNER JOIN `camera_sites` AS `Extent2` ON `Extent1`.`camera_site_id` = `Extent2`.`id` 
    WHERE ('yes' = `Extent1`.`enabled`) AND ('yes' = `Extent2`.`enabled`)) AS `Filter1` INNER JOIN `servers` AS `Extent3` ON `Filter1`.`server_id` = `Extent3`.`id` 
    WHERE ((('yes' = `Extent3`.`enabled`) AND ('hosted' = `Extent3`.`type`)) AND ('webservices' = `Extent3`.`server_method`)) AND (`Filter1`.`account_id` = 39884476) 

내 쿼리를 올바른 값으로 다시 작성하고 혼동을 유발할 수있는 방법은 무엇입니까?

+0

내부 선택 절에서 'Extent2.name'을 선택합니까? –

답변

0

enabled db를 직접 이동 한 후 생성 한 sql을 참조하고있었습니다.

var cams = (from c in db.cameras 
        where c.enabled == "yes" 
        join s in db.camera_sites on c.camera_site_id equals s.id 
        where s.enabled == "yes" 
        join o in db.servers on s.server_id equals o.id 
        where (o.enabled == "yes" 
        && o.type == "hosted" 
        && o.server_method == "webservices" 
        && c.account_id == accountId) 
        select new EventCamera_Named { Camera = c, SiteName = s.name, ServerName = o.name }).ToList();