2014-05-03 9 views
12

vorrei creare odata controller per caricare i fileResource Media Support per OData POST in API Web

FileDto

  1. FileId
  2. NameWithExtension (Tipo: String)
  3. metadati (Tipo: Elenco)
  4. Contenuto (Tipo: Stream)

========================= Azioni di richiesta Http ==================

• GET: ~/Files ({id})

Content-Type: application/json 
Result: FileDto without Content 

• GET: ~/Files ({id})

Content-Type: application/octet-stream 
Result: Stream of the File only 

• POST: ~/Files

Content-Type: ? 
Body: FileDto with Content 
Result: FileId 

Non sono sicuro di come posso ottenerlo quando accoppiato con OData.

Grazie in anticipo

risposta

3

This page spiega come creare un oDataController.

1) per installare il pacchetto sul vostro progetto, aprire Gestione console e digitare questo:

Install-Package Microsoft.AspNet.Odata 

2) Aprire il WebApiConfig.cs e, all'interno Register metodo, aggiungere questo codice:

ODataModelBuilder builder = new ODataConventionModelBuilder(); 
      builder.EntitySet<FileDto>("File");    
      config.MapODataServiceRoute(
       routeName: "ODataRoute", 
       routePrefix: null, 
       model: builder.GetEdmModel()); 

3) Crea la tua oDataController sostituendo il yourDataSourceHere a noi e la propria classe:

public class FileController : ODataController 
{ 
    [EnableQuery] 
    public IQueryable<FileDto> Get() 
    { 
     return yourDataSourceHere.Get(); 
    } 

    [EnableQuery] 
    public SingleResult<FileDto> Get([FromODataUri] int key) 
    { 
     IQueryable<FileDto> result = yourDataSourceHere.Get().Where(p => p.Id == key); 
     return SingleResult.Create(result); 
    } 

    public IHttpActionResult Post(FileDto File) 
    { 
     if (!ModelState.IsValid) 
      return BadRequest(ModelState); 

     yourDataSourceHere.Add(product); 

     return Created(File); 
    } 
} 

OBS: Per provare questa soluzione, ho cambiato proprietà Content s' il FileDto. Più specificamente, è di tipo! Da Stream a byte[]. Inserito il contenuto come stringa Base64.

Problemi correlati