1

由于一些扩展,我封装了 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,no headers,...)(通常)执行的空 OdataServiceResponse

这就是我调用 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 核对)

4

1 回答 1

0

我的包装类每次都创建一个新容器,因此实体已从 Default.Container 中删除

于 2015-09-09T11:51:15.380 回答