2014-02-07 6 views
0

이것은 간단 할 것으로 예상되지만 작동하지 않습니다. SQL Server DB에 저장 프로 시저를 만들고 MVC3 웹 응용 프로그램 내에서 호출 할 수 있기를 바랍니다. 내 SP를 생성 된 함수로 가져올 수 있었지만이 함수를 호출하면 오류가 발생합니다.MVC3 호출 SQL Server 저장 프로 시저

데이터 판독기가 'dbname.school_accreditation'과 호환되지 않습니다. 'school_accreditation_id'유형의 구성원에는 데이터 판독기에 동일한 이름의 해당 열이 없습니다.

SQL Server 내에 저장 프로 시저를 만들었습니다.

USE [mydb] 
GO 
/****** Object: StoredProcedure [dbo].[DeleteSchoolAccreditations] Script Date: 02/07/2014 20:56:21 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[DeleteSchoolAccreditations] 
@school_id int 
AS 

DELETE FROM [dbo].[school_accreditation] 
WHERE school_id = @school_id 

생성 된 C# 함수는 SP를 호출합니다.

public virtual ObjectResult<school_accreditation> DeleteSchoolAccreditations(Nullable<int> school_id) 
    { 
     ((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace.LoadFromAssembly(typeof(school_accreditation).Assembly); 

     var school_idParameter = school_id.HasValue ? 
      new ObjectParameter("school_id", school_id) : 
      new ObjectParameter("school_id", typeof(int)); 

     return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<school_accreditation>("DeleteSchoolAccreditations", school_idParameter); 
    } 

이 생성 된 메소드를 작동 시키려면이 작업을 수행해야합니까? 메서드에 정수를 전달할 때 디버깅 할 때 모두 괜찮아 보입니다.

큰 도움을 받으시기 바랍니다.

+0

사용중인 기술을 이해했다면 도움이 될 것입니다. MVC는 데이터 액세스를위한 어떤 기능도 가지고 있지 않습니다. 원하는 모든 데이터 액세스 기술을 사용할 수 있습니다. MVC가 아닌 Entity Framework를 사용하고있는 것으로 보입니다. –

+0

그건 중요한 지적입니다. 나는 더 명백해야 했음에 틀림 없다. 감사합니다 – Yos

답변

1

저장된 사전은 school_accreditation 엔티티를 반환하지 않습니다. 삭제이므로 영향을받는 행 수만 반환합니다. 그러나 저장된 Preocedure ExecuteFucntion은 반환되는 유형의 school_accreditation을 원합니다.

분명히 sproc 메서드를 생성 할 때 잘못된 것이 었습니다. 혹시 당신이 그것을 만든 후에 당신이 sproc을 바꿨습니까? 그렇다면 edmx에서 메소드를 삭제하고 다시 추가하십시오.

이와 같은 경우 전화를 직접받는 것이 더 간단 할 수 있습니다. 예 : MyContext.Database.ExecuteSqlCommand("DeleteSchoolAccreditations", school_id);

+0

그건 완벽하게 이해가됩니다. 그래서 그것은 내 저장 프로 시저 중 하나입니다 (나는 당신이 이것을 알아 차렸을 것이라고 추측합니다, 그러므로 나는 그것이 괜찮다고 짐작할 수 있다고 가정합니다), 또는 당신이 말했던 것처럼 제가 실수를했습니다. 어느 쪽이든 soo 당신에게 많이 감사합니다. 나는 그것을 해결할 것이다! – Yos

관련 문제