を使用しようとしましたODataLibを使用して " @ '接頭辞を使用して、従来のプロジェクトとの互換性を保ちます。
修正するには、ソースからMicrosoft.OData.Core
とMicrosoft.AspNetCore.OData
を再コンパイルしてから、ODataJsonLightWriterUtils.WriteInstanceAnnotationName
を編集して、注釈のシリアル化方法を変更してください。
OData WebApiプロジェクトでは、ODataLibを使用してシリアル化を行いますが、通常のNugetパッケージではなくカスタムアセンブリとして両方を含めることができるように、両方をコンパイルする必要があります。
プロジェクトのためのソースはここにある:私の場合は
https://github.com/OData/Webapi/tree/feature/netcore
https://github.com/OData/odata.net
私はnetcoreapp2.0によ、メーリングリストへ。あなたは完全にodata
プレフィックスを削除するにはDIに渡すことができる設定があり
:ソースプロジェクトをコンパイルすると、あまりにも多くを取得した場合
public virtual void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//...
var odata_options = new ODataSimplifiedOptions(){ EnableWritingODataAnnotationWithoutPrefix = true};
//...
app.UseMvc(routeBuilder =>
{
routeBuilder.Select().Expand().Filter().OrderBy().MaxTop(null).Count();
// custom routing - ymmv
string odata_route_name = "ODataRoute";
routeBuilder.MapODataServiceRoute(odata_route_name, "data", a =>
{
a.AddService(Microsoft.OData.ServiceLifetime.Singleton, sp => model);
a.AddService<IODataPathHandler>(Microsoft.OData.ServiceLifetime.Singleton, sp => new DefaultODataPathHandler());
a.AddService<IEnumerable<IODataRoutingConvention>>(Microsoft.OData.ServiceLifetime.Singleton, sp => ODataRoutingConventions.CreateDefaultWithAttributeRouting(odata_route_name, routeBuilder));
a.AddService<ODataSerializerProvider>(Microsoft.OData.ServiceLifetime.Singleton, sp => new CIQODataSerializerProvider(sp, loggerFactory));
a.AddService<ODataDeserializerProvider>(Microsoft.OData.ServiceLifetime.Singleton, sp => new DefaultODataDeserializerProvider(sp));
a.AddService<ILoggerFactory>(Microsoft.OData.ServiceLifetime.Singleton, sp => loggerFactory);
a.AddService<ODataSimplifiedOptions>(Microsoft.OData.ServiceLifetime.Singleton, sp => odata_options);
// ... other specifics to my situation
});
routeBuilder.EnableDependencyInjection();
// mvc/api routes ...
});
}
が、私はまた、nugetが提供するDLLを編集するhttps://github.com/0xd4d/dnSpyを試してみました。私はこれがうまくいくと思います。直接のDLL参照が使われるように、ODataLibへの依存関係を持つすべてのパッケージが削除されていることを確認するだけです。