2015-01-21 4 views
0

나는 레코드의 정확한 숫자를 반환 아약스/JSON 호출을 가지고 있지만 모든 동일한 레코드, 최초의 기록이다..NET MVC 반환 중복 레코드가

SQL보기 :

ALTER view [dbo].[v_EMS_BM_Organization_Detail] as 
select a.OrgID 
, a.Organization 
, a.inactive 
, b.buID 
, b.BusinessUnit 
, count(distinct c.Budget) Budgets 
, count(distinct d.BEMS) People 
from t_EMS_BM_Organization a 
left join t_EMS_BM_Business_Unit b 
on a.OrgID = b.OrgID 
left join t_EMS_BM_Budget c 
on b.buID = c.buID 
left join t_EMS_BM_Person d 
on c.Budget = d.Budget 
group by a.OrgID 
, a.Organization 
, a.inactive 
, b.buID 
, b.BusinessUnit 
GO 

SQL 서버에 쿼리 :

select * 
from v_EMS_BM_Organization_Detail 
where OrgID= 6 

결과 :

OrgID Organization inactive buID BusinessUnit Budgets People 
6  E3001  0  27  Manufacturing Services Staff 1 5 
6  E3001  0  43  BASN 1 0 
6  E3001  0  45  Special Assignment 1 0 

내 모델 :

namespace EMSBM.Models 
{ 
    using System; 
    using System.Collections.Generic; 

    public partial class v_EMS_BM_Organization_Detail 
    { 
     public int OrgID { get; set; } 
     public string Organization { get; set; } 
     public Nullable<bool> inactive { get; set; } 
     public Nullable<int> buID { get; set; } 
     public string BusinessUnit { get; set; } 
     public Nullable<int> Budgets { get; set; } 
     public Nullable<int> People { get; set; } 
    } 
} 
,536,913,632 10

내 컨트롤러 :

[HttpPost] 
public JsonResult OrgDetails(int ID) 
{ 
    List<v_EMS_BM_Organization_Detail> orgDetail = new List<v_EMS_BM_Organization_Detail>(); 

    orgDetail = db.v_EMS_BM_Organization_Detail.Where(x => x.OrgID == ID).OrderBy(x => x.BusinessUnit).ToList(); 

    return this.Json(new 
    { 
     Result = (from obj in orgDetail 
        select new 
        { 
         OrgID = obj.OrgID 
         , 
         Organization = obj.Organization 
         , 
         inactive = obj.inactive 
         , 
         buID = obj.buID 
         , 
         BusinessUnit = obj.BusinessUnit 
         , 
         Budgets = obj.Budgets 
         , 
         People = obj.People 
        }) 
    }); 
} 

내 아약스/JSON 호출 :

$('#organization-table-body').delegate('tr', 'click', function() { 
    var OrgID = $(this).attr('id'); 
    OrgID = OrgID.substr(2, OrgID.length); 

    $.ajax({ 
     type: 'post', 
     url: '/OrganizationDetail/OrgDetails', 
     contentType: "application/json; charset=utf-8", 
     data: JSON.stringify({ ID: OrgID }), 
     success: function (data) { 
      $('#org-detail-body').empty(); 
      var html = ''; 
      $.each(data['Result'], function (i, item) { 
       if (i == 0) { 
        $('#org-name').html(item.Organization +' Details'); 
        $('#OrgID').val(OrgID); 

        $('#btn-active-status').removeClass('btn-primary'); 
        $('#btn-active-status').removeClass('btn-danger'); 
        if (item.inactive == true) { 
         $('#btn-active-status').html('Activate Organization'); 
         $('#btn-active-status').addClass('btn-primary'); 
        } else { 
         $('#btn-active-status').html('Deactivate Organization'); 
         $('#btn-active-status').addClass('btn-danger'); 
        } 
       } 
       html += '<tr id="tr' + item.buID + '" class="cursor-pointer"><td>' + item.BusinessUnit + '</td>'; 
       html += '<td>' + item.Budgets + '</td><td>' + item.People + '</td></tr>'; 
      }); 
      $('#org-detail-body').html(html); 
      $('#org-detail-div').modal('show'); 
     }, 
     error: function (ex) { 
      alert(ex.responseText); 
     } 
    }); 

나는 세 가지 기록을 얻을 수 위의 SQL Server 쿼리에서 추천을 전달이 정확합니다.

Business Unit Budgets  People 
BASN   1   0 
BASN   1   0 
BASN   1   0 

것은 내가 첫 번째 기록에 상관없이 내가 통과 어떤 ID 시대의 올바른 X 번호를 중복되지 얻을 VS 2012 년 디버깅 : 그러나 세 가지 기록은 첫 번째 기록이다.

답변

0

이 문제는보기에 기본 키가없는 것과 관련이 있습니다. EF가 고유하게 행을 식별하는 데 사용하려고 시도하는 메소드가 실패했습니다.

데이터베이스 우선을 사용하고있는 것처럼 보이며 모델 클래스가 생성 된 코드입니까? 그렇다면 모델 브라우저에서 찾아보십시오. EF는 기본 키를 작성하는 데 사용해야하는 열을 추측합니다 (일반적으로 매우 나쁨). NULL이 될 수 없다는 것을 알고 누락 된 경우 열을 제외합니다.

ROW_NUMBER()을 사용하여 테이블의 서로 게이트 키를 만들거나 기존 열을 사용할 수 있습니다. 어느 쪽의 방법 으로든 키에 포함 된 열에 대해 EF에 힌트를 제공하려면 열을 ISNULL() (포함하도록 강제) 또는 NULLIF() (제외를 강제로)으로 묶어야합니다. 그것을했다 http://girlfromoutofthisworld.com/entity-framework-and-setting-primary-keys-on-views/

+0

: 여기에 모든이에 제공되는 튜토리얼이 있습니다

. 감사! – Matt

관련 문제