OdataClient SaveChanges не работает и приводит к пустому Microsoft.OData.Client.DataServiceResponse
Я инкапсулировал контейнер odata из-за некоторых расширений:
public class Connector
{
public string apiKey{get;set;}
public Connector(string apiKey)
{
this.apiKey = apiKey;
}
public Default.Container Get()
{
Default.Container container = new Default.Container(new Uri("http://documents.omnisoftonline.be/odata"));
container.BuildingRequest += container_BuildingRequest;
return container;
}
/// <summary>
/// When fetching a single Document, you can enable this method to including fetch the binary data
/// </summary>
/// <param name="container"></param>
/// <returns></returns>
internal bool doIO = false;
internal void container_BuildingRequest(object sender, BuildingRequestEventArgs e)
{
e.Headers.Add("X-ApiKey", apiKey);
if (doIO && e.RequestUri.ToString().Contains("/Documents"))
{
e.RequestUri = new Uri(e.RequestUri.ToString() + (e.RequestUri.Query.Contains("?") ? "&" : "?") + "doIO=true");
}
this.container_BuildingRequest(sender, e);
}
}
Когда я использую мой.dll (используя класс Connector), у меня появляется пустой результат ( statuscode = -1, без заголовков, ...)
Вот как я называю DLL
documentsConnector.Get().AddToDocuments(docToCreate);
var serviceResponse = documentsConnector.Get().SaveChanges(Microsoft.OData.Client.SaveChangesOptions.None); //tried several options
foreach(var operationResponse in serviceResponse)
{
Console.WriteLine("Response: {0}", operationResponse.StatusCode); //no operationResponses, so this isn't executed
}
Это может быть потому, что мой объект недействителен. Но странно, что я не вижу никакой проверки...
Любые мысли о том, как распространять SaveChanges() или предварительно проверить (перед отправкой) сущность? Сообщение не происходит (проверено с Fiddler)
1 ответ
Решение
Мой класс-оболочка каждый раз создавал новый контейнер, поэтому объекты удалялись из Default.Container