모두, OData을 사용하여 저장 프로 시저 노출에 대한 지침을 찾고 있습니다.Odata 사용 ASP.NET 웹 API를 사용하여 저장 프로 시저 호출
이미 노출 된 기존 WEB-API 앱을 수정 중입니다. OData. 현재 SQL Server에서 테이블과 뷰를 노출하고 있으며 이제는 Stored procedures를 노출해야합니다. 현재 저장 프로 시저 (Stored Procedure)는 많은 매개 변수를 허용하고 백 엔드 데이터베이스에서 소수의 테이블로 변경 내용을 푸시합니다. 내가 순진 지원되는 저장 프로 시저가 의 하나로, OData 수 없음을 이해, Actions and Functions in OData v4 Using ASP.NET Web API 2.2 :이 가이드를 따라하기 위해 노력했습니다
<packages>
<package id="EntityFramework" version="6.1.3" targetFramework="net45" />
<package id="EntityFramework" version="6.0.2" targetFramework="net45" />
<package id="LinqKit" version="1.1.1" targetFramework="net45" />
<package id="Microsoft.AspNet.Cors" version="5.2.2" targetFramework="net45" />
<package id="Microsoft.AspNet.OData" version="5.2.1" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi" version="5.2.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.2" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.2" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Cors" version="5.2.2" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.0" targetFramework="net45" />
<package id="Microsoft.Data.Edm" version="5.6.3" targetFramework="net45" />
<package id="Microsoft.Data.OData" version="5.6.3" targetFramework="net45" />
<package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net45" />
<package id="Microsoft.OData.Client" version="6.8.1" targetFramework="net45" />
<package id="Microsoft.OData.Core" version="6.6.0" targetFramework="net45" />
<package id="Microsoft.OData.Core" version="6.8.1" targetFramework="net45" />
<package id="Microsoft.OData.Edm" version="6.6.0" targetFramework="net45" />
<package id="Microsoft.OData.Edm" version="6.8.1" targetFramework="net45" />
<package id="Microsoft.Spatial" version="6.6.0" targetFramework="net45" />
<package id="Microsoft.Spatial" version="6.8.1" targetFramework="net45" />
<package id="Newtonsoft.Json" version="6.0.5" targetFramework="net45" />
<package id="Patches.System.Web.OData" version="5.3.0-datetimefixes" targetFramework="net45" />
<package id="System.Linq.Dynamic" version="1.0.2" targetFramework="net45" />
<package id="System.Spatial" version="5.6.3" targetFramework="net45" />
</packages>
: 여기
프로젝트에서 사용하는 패키지입니다.기존 응용 프로그램을 수정하고 WebApiConfig 내부에 모델과 배선을 추가했습니다. 저장 프로 시저에 대해 정의 된 기본 키가 안 ... 말도없이
가 간다 : 내 첫 번째 실행에 나는 다음과 같은 오류가 발생했습니다."vw_tickets_all_tables"에 액세스하려고하고 있는데도 오류가 발생합니다 ... 오류로 인해 전체 애플리케이션이 중단된다고 추측합니다.
모델 :
public class InsertUpdateTicketsPJMTickets : DbContext
{
public InsertUpdateTicketsPJMTickets()
: base("name=InsertUpdateTicketsPJMTickets")
{
}
public DbSet<InsertUpdateTicketsPJMTicketsBase> InsertUpdateTicketsPJMTickets { get; set; }
}
public partial class InsertUpdateTicketsPJMTicketsBase
{
string ticketType{set; get;}
string category{set; get;}
string title{set; get;}
string details{set; get;}
Nullable<bool> isHtml{set; get;}
// bunches of fields left out for brevity
string lastUpdateBy{set; get;}
string createdBy{set; get;}
string creationName{set; get;}
string revisionName{set; get;}
}
WepApiConfig :
public static IEdmModel GetUOMSModel()
{
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.ContainerName = "UOMSContext";
builder.EntityType<Models.UOMS.DBO.InsertUpdateTicketsPJMTickets>()
.Action("Execute");
var function = builder.Function("GetParameters");
function.Parameter<string>("ticketType");
function.Parameter<string>("category");
function.Parameter<string>("title");
function.Parameter<string>("details");
// bunches of fields left out for brevity
function.Parameter<int?>("inputTicketId");
function.Parameter<string>("lastUpdateBy");
function.Parameter<string>("createdBy");
function.Parameter<string>("creationName");
function.Parameter<string>("revisionName");
function.ReturnsCollectionFromEntitySet<Models.UOMS.DBO.InsertUpdateTicketsPJMTickets>("InsertUpdateTicketsPJMTickets");
}
나는 "키 일단 CONTROLLER을 추가 할 것입니다 여기에
내가 지금까지 가지고있는 코드입니다 "문제가 해결되었습니다.읽어 주셔서 감사합니다.