项目作者: commerble

项目描述 :
OData server lib for EntityFramework. (alternative RESTier)
高级语言: C#
项目地址: git://github.com/commerble/ODatalizer.git
创建时间: 2020-06-18T05:42:21Z
项目社区:https://github.com/commerble/ODatalizer

开源协议:MIT License

下载


Unit Tests

The simplest implementation of OData server.

Consepts

  • Simple setup
  • Can use even if dynamic load DbContext assembly

Install

  1. $ dotnet add package ODatalizer.EFCore
  2. $ dotnet add package Microsoft.EntityFrameworkCore.Proxies --version 6.0.*

Usage

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. // add DbContext and use lazy loading proxies.
  4. services.AddDbContext<SampleDbContext>(opt =>
  5. opts
  6. .UseLazyLoadingProxies()
  7. // If your db provider does not suppot AmbientTransaction, ignore the warning.
  8. .ConfigureWarnings(o => o.Ignore(RelationalEventId.AmbientTransactionWarning)));
  9. // add ODatalizer services
  10. services.AddODatalizer(sp =>
  11. {
  12. // create ODatalizer ep metadata
  13. var ep = new ODatalizerEndpoint(
  14. db: sp.GetRequiredService<SampleDbContext>(),
  15. routeName: "Sample",
  16. routePrefix: "sample");
  17. return new[] { ep };
  18. });
  19. ...
  20. }
  21. public void Configure(IApplicationBuilder app, IWebHostEnvironment env, SampleDbContext sample)
  22. {
  23. // use $batch endpoint
  24. app.UseODatalizer();
  25. ...
  26. }

Navigation Resource Path

When you need to read and write all accesses, custom dynamic controller inherits ODatalizerController<TDbContext>.

  1. public class SampleController : ODatalizerController<SampleDbContext>
  2. {
  3. public SampleController(IServiceProvider sp) : base(sp)
  4. {
  5. }
  6. }

And you set the controller name to endpoint settings.

  1. // create ODatalizer ep metadata
  2. var ep = new ODatalizerEndpoint(db:sample,
  3. routeName: "Sample",
  4. routePrefix: "sample",
  5. controller: nameof(SampleController));

Many to Many (Skip navigation)

Auto generate first level navigationlink property endpoint.

  • generate : ~/entityset/key/navigation/$ref
  • generate : ~/entityset/key/navigation/key/$ref
  • not generate : ~/entityset/key/navigation/navigation/$ref
  • not generate : ~/entityset/key/navigation/navigation/navigation/$ref

Dynamic controller does not support navigationlink segment.
If you need not generate path, create controller action by self in ODataController or ODatalizerController.

Others

See sample project https://github.com/commerble/ODatalizer/tree/master/src/Sample.EFCore

  • Authorize
  • TypeConverter(ModelBinder)