public static IODataApiBuilder AddODataApiMongoDb(this IODataApiBuilder oDataApiBuilder, string connection) { MongoDefaults.GuidRepresentation = MongoDB.Bson.GuidRepresentation.Standard; oDataApiBuilder.Services.TryAddSingleton <IMongoDatabase>(services => { var urlBuilder = new MongoUrlBuilder(connection); var client = new MongoClient(connection); return(client.GetDatabase(urlBuilder.DatabaseName)); }); return(oDataApiBuilder); }
public static IODataApiBuilder AddEntityFramework <TContext>(this IODataApiBuilder builder) where TContext : DbContext { var serviceProvider = builder.Services.BuildServiceProvider(); var context = serviceProvider.GetRequiredService <TContext>(); var properties = typeof(TContext).GetProperties(); var types = context.Model.GetEntityTypes(); foreach (var entityType in types) { var dbSetType = typeof(DbSet <>).MakeGenericType(entityType.ClrType); var property = properties.FirstOrDefault(_ => _.PropertyType.IsAssignableFrom(dbSetType)); builder.AddResource(entityType.ClrType, property != null ? property.Name.ToLower() : null); } builder.Services.TryAddTransient <DbContext, TContext>(); builder.Services.TryAddScoped(typeof(ICrudRepository <,>), typeof(DbSetRepository <,>)); return(builder); }
public static IODataApiBuilder AddEasyDocDb(this IODataApiBuilder oDataApiBuilder, string folder = "../data") { oDataApiBuilder.Services.TryAddSingleton(new DocumentRepositoryFactory(folder)); return(oDataApiBuilder); }
public static IODataApiBuilder AddEasyDocDb(this IODataApiBuilder oDataApiBuilder, string connection, IDocumentStorage storage) { oDataApiBuilder.Services.TryAddSingleton(new DocumentRepositoryFactory(connection, storage)); return(oDataApiBuilder); }