0

LoggerEntriesControllerの POCO タイプを返すODataController が呼び出されましたWebModels.LoggerEntry。POCO は、クライアントとサーバー間で共有される外部ライブラリにあります。

私はこのように登録しEntitySetます:

var builder = new ODataConventionModelBuilder();
builder.EntitySet<WebModels.LoggerEntry>("LoggerEntries");
config.MapODataServiceRoute("odata", "api", builder.GetEdmModel());

私の/apiメタデータには次のように表示されます。

{
  "@odata.context":"http://localhost:3177/api/$metadata","value":[
    {
      "name":"LoggerEntries","kind":"EntitySet","url":"LoggerEntries"
    },{
      "name":"LoggerEntry","kind":"EntitySet","url":"LoggerEntry"
    }
  ]
}

これにより、Simple.Odata.Client が LoggerEntry を /api/LoggerEntries url に解決できないという問題が発生し、次のような厳密に型指定された呼び出しを行うと 404 が返されます。

await this.Client
    .For<LoggerEntry>()
    .Set(new LoggerEntry()
    {
        Title = title,
        Message = message,
    })
    .InsertEntryAsync();

これにより、/apiメタデータは次のようになるはずです。

{
  "@odata.context":"http://localhost:3177/api/$metadata","value":[
    {
      "name":"LoggerEntry","kind":"EntitySet","url":"LoggerEntries"
    }
  ]
}

何が間違っているのか、または ODataConventionModelBuilder から後者のメタデータの結果を取得するために何をする必要があるのか​​ わかりません。

4

1 に答える 1