OData는객체 지향 도메인 모델을 HTTPREST인터페이스로 사용할 수 있도록하는개방형 표준입니다. 간단히 말해서, HTTP 요청의 결과로 도메인 모델을 반환하고, URL을 통해 쿼리하고, 함수 및 작업을 생성하기 위한 specification을 제공합니다.
많은 사람들이 OData에 대해 알지 못하며, ASP.NET Core에서 OData를 사용하는 것에 대한 주의 사항과 문서가 많지 않기 때문에 주제에 대해 몇 가지 게시물을 작성하기로 결정했습니다.
Setting Up
Parent와Child라는 두 개의 클래스가있는 도메인 모델을 가지고 있다고 가정 해 봅시다.
또한 Entity Framework Core 컨텍스트를 제공해야합니다.
public class ParentChildContext : DbContext
{
public ParentChildContext(DbContextOptions options) : base(options) { }
public DbSet<Parent> Parents { get; set; }
public DbSet<Child> Children { get; set; }
}
이 endpoint를odata(첫 번째 매개 변수)라는 이름으로 등록하고 동일한 접두사 (두 번째 매개 변수)를 사용하여 쉽게 변경할 수 있습니다.경로에서EDM 데이터 모델을반환합니다.우리는 이것을 다음과 같이 만듭니다 :
private static IEdmModel GetEdmModel(IServiceProvider serviceProvider)
{
var builder = new ODataConventionModelBuilder(serviceProvider);
builder.EntitySet<Parent>(“Parents”);
builder.EntitySet<Child>(“Children”);
return builder.GetEdmModel();
}
주목할 것은 이것이conventions-based model builder 인ODataConventionModelBuilder입니다.이것은 각 엔티티에 대해 id 속성을 유추하는 것과 같은 몇 가지 사항을 처리하므로 명시 적으로 명시 할 필요가 없습니다.엔티티에Id또는EntityId이외의 재미있는 이름의 id 특성이있는경우 이를 지정해야합니다.