public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); // 取消注释下面的代码行可对具有 IQueryable 或 IQueryable<T> 返回类型的操作启用查询支持。 // 若要避免处理意外查询或恶意查询,请使用 QueryableAttribute 上的验证设置来验证传入查询。 // 有关详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=279712。 //config.EnableQuerySupport(); // 若要在应用程序中禁用跟踪,请注释掉或删除以下代码行 // 有关详细信息,请参阅: http://www.asp.net/web-api config.EnableSystemDiagnosticsTracing(); // 参考:http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v3/creating-an-odata-endpoint var builder = new ODataConventionModelBuilder(); builder.EntitySet<Product>("Products"); // 参考:http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v3/working-with-entity-relations builder.EntitySet<Supplier>("Suppliers"); //config.Routes.MapODataRoute("OData", "odata", builder.GetEdmModel()); config.Routes.MapODataServiceRoute("ODataRoute", "odata", builder.GetEdmModel()); }
public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); ODataConventionModelBuilder modelBuilder = new ODataConventionModelBuilder(); modelBuilder.EntitySet<FontInfo>("FontInfo"); modelBuilder.EntitySet<FontSummary>("FontSummary"); IEdmModel model = modelBuilder.GetEdmModel(); config.Routes.MapODataRoute(routeName: "odataFontInfo", routePrefix: "o", model: model); //ODataConventionModelBuilder fsBuilder = new ODataConventionModelBuilder(); //fsBuilder.EntitySet<FontSummary>("FontSummary"); //IEdmModel fsModel = fsBuilder.GetEdmModel(); //config.Routes.MapODataRoute(routeName: "routeTwo", routePrefix: "o2", model: fsModel); // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type. // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries. // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712. config.EnableQuerySupport(); config.Formatters.InsertRange(0, ODataMediaTypeFormatters.Create()); // To disable tracing in your application, please comment out or remove the following line of code // For more information, refer to: http://www.asp.net/web-api config.EnableSystemDiagnosticsTracing(); }
public static void Register(HttpConfiguration config) { // standard Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); // OData ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<Customer>("Customers"); builder.EntitySet<Invoice>("Invoices"); // OData Action ActionConfiguration purchase = builder.Entity<Customer>().Action("Purchase"); purchase.Parameter<int>("AmountOfShoes"); purchase.ReturnsFromEntitySet<Invoice>("Invoices"); config.Routes.MapODataServiceRoute("odata", "odata", builder.GetEdmModel()); // OData with fixed metadata // see: http://www.getbreezenow.com/documentation/odata-server config.Routes.MapODataServiceRoute("odataFixed", "odataFixed", EdmBuilder.GetEdm<DataContext>(), new DefaultODataBatchHandler(GlobalConfiguration.DefaultServer)); }
public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); var newFormater = new CsvTextMediaFormatter(); newFormater.MediaTypeMappings.Add(new QueryStringMapping("frmt", "fwt", new MediaTypeHeaderValue("text/plain"))); config.Formatters.Add(newFormater); config.Formatters.JsonFormatter.MediaTypeMappings.Add( new QueryStringMapping("frmt", "json", new MediaTypeHeaderValue("application/json"))); config.Formatters.XmlFormatter.MediaTypeMappings.Add( new QueryStringMapping("frmt", "xml", new MediaTypeHeaderValue("application/xml"))); // Serialize les types complexes qui sont rattachés à l'objet //var json = config.Formatters.JsonFormatter; //json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects; //config.Formatters.Remove(config.Formatters.XmlFormatter); // New code: // Odata ODataModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<Individual>("Individuals"); builder.EntitySet<Contract>("Contracts"); ODataHttpRouteCollectionExtensions.MapODataRoute(config.Routes, routeName: "ODataRoute", routePrefix: "odata", model: builder.GetEdmModel()); builder.Entity<Individual>().Ignore(item => item.Contracts); builder.Entity<Contract>().Ignore(item => item.Individual); }
public static void Register(HttpConfiguration config) { // OData configuration ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<Author>("authors"); builder.EntitySet<Blog>("blogs"); builder.EntitySet<Comment>("comments"); builder.EntitySet<Post>("posts"); builder.ContainerName = "BlogItDataService"; config.Routes.MapODataServiceRoute("OData", "api/odata", builder.GetEdmModel()); var queryAttributes = new EnableQueryAttribute() { PageSize = 100, MaxTop = 100, EnsureStableOrdering = false }; config.AddODataQueryFilter(queryAttributes); // Web API attribute routing config.MapHttpAttributeRoutes(); // Additional formatters config.Formatters.Add(new BsonMediaTypeFormatter()); }
public static void Register(HttpConfiguration config) { // Web API routes config.MapHttpAttributeRoutes(); // Use camel case for JSON data. config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); config.Formatters.JsonFormatter.SerializerSettings.DateFormatString = "yyyy-MM-ddTHH:mm:ssZ"; config.Formatters.Remove(config.Formatters.XmlFormatter); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); config.Filters.Add(new AuthorizeAttribute()); config.Filters.Add(new SecurityExceptionFilterAttribute()); ODataModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<GroupViewModel>("Groups"); builder.EntitySet<LessonViewModel>("Lessons"); builder.EntitySet<ScoreViewModel>("Scores"); builder.EntitySet<UserViewModel>("UserView"); config.Routes.MapODataServiceRoute("odata", "odata", builder.GetEdmModel()); }
public static void Register(HttpConfiguration config) { // Attribute routing. config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "v1/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type. // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries. // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712. config.AddODataQueryFilter(); var builder = new ODataConventionModelBuilder(); builder.EntitySet<Repository>("Repositories"); builder.EntitySet<Session>("Sessions"); builder.EntitySet<LogEntry>("LogEntries"); config.Routes.MapODataServiceRoute("odata", "odata/v1", builder.GetEdmModel()); // To disable tracing in your application, please comment out or remove the following line of code // For more information, refer to: http://www.asp.net/web-api config.EnableSystemDiagnosticsTracing(); // Use camel case for JSON data. config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); }
private static IEdmModel GetModel() { ODataModelBuilder builder = new ODataConventionModelBuilder(); EntitySetConfiguration<OrderByCustomer> customers = builder.EntitySet<OrderByCustomer>("OrderByCustomers"); EntitySetConfiguration<OrderByOrder> orders = builder.EntitySet<OrderByOrder>("OrderByOrders"); return builder.GetEdmModel(); }
public static void Register(HttpConfiguration config) { // Web API configuration and services config.Formatters.Clear(); config.Formatters.Add(new JsonMediaTypeFormatter()); var json = config.Formatters.JsonFormatter; json.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; EnableCorsAttribute provider = new EnableCorsAttribute("*", "*", "*"); config.EnableCors(provider); // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new {id = RouteParameter.Optional} ); // config.MapODataServiceRoute("odata", "odata", model:GetEdmModel()); ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<Basic_Information>("Basic_Information1"); builder.EntitySet<Class>("Classes"); builder.EntitySet<Department>("Departments"); config.Routes.MapODataServiceRoute("odata", "odata", builder.GetEdmModel()); //Database.SetInitializer<DomainModel>(new DropCreateDatabaseIfModelChanges<DomainModel>()); }
public static IEdmModel GetModel() { ODataConventionModelBuilder modelBuilder = new ODataConventionModelBuilder(); modelBuilder.EntitySet<TubsWeb.ViewModels.TripSummaryViewModel>("Trips"); modelBuilder.EntitySet<Spc.Ofp.Tubs.DAL.Entities.Observer>("Observers"); return modelBuilder.GetEdmModel(); }
public static IEdmModel GetEdmModel() { var builder = new ODataConventionModelBuilder(); builder.EntitySet<Product>("Products"); builder.EntitySet<Order>("Orders"); return builder.GetEdmModel(); }
public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); var cors = new EnableCorsAttribute("*", "*", "*"); config.EnableCors(cors); // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type. // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries. // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712. //config.EnableQuerySupport(); var modelBuilder = new ODataConventionModelBuilder(); modelBuilder.EntitySet<Song>("Songs"); modelBuilder.EntitySet<Artist>("Artists"); modelBuilder.EntitySet<Album>("Albums"); var json = config.Formatters.JsonFormatter; json.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.Objects; var model = modelBuilder.GetEdmModel(); config.Routes.MapODataRoute("odata", "odata", model); config.EnableQuerySupport(); }
public static void Register(HttpConfiguration config) { ODataModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<Entities.Models.Customer>(typeof(Entities.Models.Customer).Name); builder.EntitySet<Entities.Models.Order>(typeof(Entities.Models.Order).Name); builder.EntitySet<Entities.Models.ShoppingCart>(typeof(Entities.Models.ShoppingCart).Name); var orderDetailBuilder = builder.EntitySet<Entities.Models.OrderDetail>(typeof(Entities.Models.OrderDetail).Name); orderDetailBuilder.EntityType.HasKey(x => x.ProductID); var customerDemographicBuilder = builder.EntitySet<Entities.Models.CustomerDemographic>(typeof(Entities.Models.CustomerDemographic).Name); customerDemographicBuilder.EntityType.HasKey(x => x.CustomerDesc); var productBuilder = builder.EntitySet<Entities.Models.Product>(typeof(Entities.Models.Product).Name); productBuilder.EntityType.HasKey(t => t.ProductID); builder.EntitySet<Entities.Models.Category>(typeof(Entities.Models.Category).Name); builder.EntitySet<Entities.Models.Supplier>(typeof(Entities.Models.Supplier).Name); builder.EntitySet<Entities.Models.Employee>(typeof(Entities.Models.Employee).Name); builder.EntitySet<Entities.Models.Shipper>(typeof(Entities.Models.Shipper).Name); var model = builder.GetEdmModel(); config.Routes.MapODataRoute("odata", "odata", model); config.EnableQuerySupport(); }
public static void Register(HttpConfiguration config) { // Web API configuration and services config.MessageHandlers.Add(new LogHandler()); // Web API routes config.MapHttpAttributeRoutes(); //Definir el encargado de serializar los objetos var json = config.Formatters.JsonFormatter; //Establecemos que queremos mantener las referencias en el formateo json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects; //Deshabilitamos la serializacion en XML config.Formatters.Remove(config.Formatters.XmlFormatter); ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); //registra los modelos de datos para all OData builder.EntitySet<Usuario>("Usuarios"); //conjunto de datos de cada una de las tablas que queremos mapear builder.EntitySet<Mensaje>("Mensaje");//conjunto de datos de cada una de las tablas que queremos mapear config.Routes.MapODataServiceRoute("odata", "odata", builder.GetEdmModel()); //la ruta cuando queremos utilizar OData config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); }
public static void Register(HttpConfiguration config) { // Web API configuration and services GlobalConfiguration.Configuration.Formatters.Clear(); var formatter = new JsonMediaTypeFormatter { SerializerSettings = new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects } }; GlobalConfiguration.Configuration.Formatters.Add(formatter); // OData var builder = new ODataConventionModelBuilder(); builder.EntitySet<UserDevice>("UserDevice"); builder.EntitySet<UserInformation>("UserInformation"); config.Routes.MapODataRoute("odata", "odata", builder.GetEdmModel()); // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); }
public static void Register(HttpConfiguration config) { // Web API configuration and services // Configure Web API to use only bearer token authentication. config.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); config.Filters.Add(new AzureRaceDataWebAPI.Filters.ValidateHttpAntiForgeryTokenAttribute()); ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<Meeting>("Meetings"); builder.EntitySet<RaceStartItem>("RaceStartItem"); builder.EntitySet<CoverageItem>("CoverageItem"); config.Routes.MapODataRoute("odata", "odata", builder.GetEdmModel()); //Use JSON formatting by default var json = config.Formatters.JsonFormatter; json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects; config.Formatters.Remove(config.Formatters.XmlFormatter); config.EnableCors(); // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); }
static IEdmModel GetModel() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<TodoList>("TodoLists"); builder.EntitySet<TodoItem>("Todos"); return builder.GetEdmModel(); }
public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); ODataModelBuilder modelBuilder = new ODataConventionModelBuilder(); modelBuilder.EntitySet<tbluser>("Users"); modelBuilder.EntitySet<tbluaresult>("ToxicologyHeaders"); modelBuilder.EntitySet<tbluaresultdetail>("ToxicologyDetails"); modelBuilder.EntitySet<ToxicologyHeaderDetails>("ToxicologyHeaderDetails"); IEdmModel model = modelBuilder.GetEdmModel(); config.Routes.MapODataRoute("ODataRoute", "odata", model); // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type. // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries. // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712. //config.EnableQuerySupport(); // To disable tracing in your application, please comment out or remove the following line of code // For more information, refer to: http://www.asp.net/web-api config.EnableSystemDiagnosticsTracing(); }
public static void Register(HttpConfiguration config) { // Dependency resolver for dependency injection UnityContainer container = new UnityContainer(); container.RegisterType<IResearchRepository, ResearchRepository>(new HierarchicalLifetimeManager()); container.RegisterType<IProjectsRepository, ProjectsRepository>(new HierarchicalLifetimeManager()); container.RegisterType<IReferencesRepository, ReferencesRepository>(new HierarchicalLifetimeManager()); config.DependencyResolver = new UnityResolver(container); config.MapHttpAttributeRoutes(); // API routes config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }); //OData Models ODataModelBuilder odataBuilder = new ODataConventionModelBuilder(); odataBuilder.Namespace = "SpResearchTracker.Models"; odataBuilder.EntitySet<Project>("Projects"); odataBuilder.EntitySet<Reference>("References"); // OData routes config.Routes.MapODataRoute( routeName: "odata", routePrefix: "odata", model: odataBuilder.GetEdmModel(), batchHandler: new BreezeODataBatchHandler(GlobalConfiguration.DefaultServer)); }
public IEdmModel GetModel() { ODataModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<Customer>("ODataControllerWithQueryableOnAction"); builder.EntitySet<Order>("Orders"); return builder.GetEdmModel(); }
public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); ODataModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<RowId_Project_HubRec_ConsAttr_VW>("ProjectHubRecConsAttr") .EntityType.HasKey(r => r.RowId); builder.EntitySet<RowId_HubRec_ConsAttr_VW>("HubRecConsAttr") .EntityType.HasKey(r => r.RowId); builder.EntitySet<PROJECT_SV>("Project") .EntityType.HasKey(r => r.Code); builder.EntitySet<vwFMODataProjects>("FMProject") .EntityType.HasKey(r => r.ProjectId); builder.EntitySet<Person>("Person") .EntityType.HasKey(r => r.Id); config.Routes.MapODataServiceRoute( routeName: "ODataRoute", routePrefix: "odata", model: builder.GetEdmModel()); }
private static IEdmModel GetSampleModel() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<Employee>("employees"); builder.EntitySet<WorkItem>("workitems"); return builder.GetEdmModel(); }
public static void Register(HttpConfiguration config) { ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<Product>("Products"); builder.EntitySet<Supplier>("Suppliers"); config.Routes.MapODataRoute("odata", "odata", builder.GetEdmModel()); }
public static void Register(HttpConfiguration config) { // Web API configuration and services // Configure Web API to use only bearer token authentication. // TODO ////config.SuppressDefaultHostAuthentication(); ////config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); // Attribute routing. config.MapHttpAttributeRoutes(); // Validate all models sent to server upon receiving them config.Filters.Add(new ValidateModelAttribute(false)); // There must be exactly one exception handler. (There is a default one that may be replaced.) // To make this sample easier to run in a browser, replace the default exception handler with one that sends // back text/plain content for all errors. config.Services.Replace(typeof(IExceptionHandler), new SiteExceptionHandler()); // Convention-based routing. config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }); // OData var builder = new ODataConventionModelBuilder(); builder.EntitySet<Product>("Product"); builder.EntitySet<Category>("Category"); config.Routes.MapODataRoute("odata", "odata", builder.GetEdmModel()); // Custom JsonFormatter resolving ////config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver(); }
protected static IEdmModel GetRelationshipsModel(HttpConfiguration config) { ODataModelBuilder builder = new ODataConventionModelBuilder(config); var oneToOneParentSet = builder.EntitySet<OneToOneParent>("OneToOneParent"); var oneToOneChildSet = builder.EntitySet<OneToOneChild>("OneToOneChild"); oneToOneParentSet.HasOptionalBinding(x => x.Child, "OneToOneChild"); return builder.GetEdmModel(); }
public static IEdmModel GetEdmModel() { var modelBuilder = new ODataConventionModelBuilder(); modelBuilder.EntitySet<Location>("Locations"); modelBuilder.EntitySet<Employee>("Employees"); modelBuilder.Namespace = "MvcOData.Service.Models"; return modelBuilder.GetEdmModel(); }
private static IEdmModel GetModel() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<Product>("Products"); builder.EntitySet<ProductFamily>("ProductFamilies"); builder.EntitySet<Supplier>("Suppliers"); return builder.GetEdmModel(); }
private IEdmModel GetEdmModel() { var modelBuilder = new ODataConventionModelBuilder(); modelBuilder.EntitySet<Customer>("customer"); modelBuilder.EntitySet<Order>("order"); modelBuilder.EntitySet<Customer>("response"); return modelBuilder.GetEdmModel(); }
public static IEdmModel GetModel() { ODataModelBuilder builder = new ODataConventionModelBuilder(); EntitySetConfiguration<Customer> customers = builder.EntitySet<Customer>("Customers"); EntitySetConfiguration<Order> orders = builder.EntitySet<Order>("Orders"); EntitySetConfiguration<OrderDetail> orderItems = builder.EntitySet<OrderDetail>("OrderItems"); return builder.GetEdmModel(); }
private static IEdmModel GetModel() { ODataModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<AROCustomer>("AROCustomers"); builder.Entity<AROVipCustomer>().DerivesFrom<AROCustomer>(); builder.EntitySet<AROAddress>("AROAddresses"); builder.EntitySet<AROOrder>("Orders"); return builder.GetEdmModel(); }
public void DollarMetadata_Works_WithMultipleModels() { ODataConventionModelBuilder builder1 = new ODataConventionModelBuilder(); builder1.EntitySet <FormatterPerson>("People1"); var model1 = builder1.GetEdmModel(); ODataConventionModelBuilder builder2 = new ODataConventionModelBuilder(); builder2.EntitySet <FormatterPerson>("People2"); var model2 = builder2.GetEdmModel(); HttpServer server = new HttpServer(); server.Configuration.Routes.MapODataServiceRoute("OData1", "v1", model1); server.Configuration.Routes.MapODataServiceRoute("OData2", "v2", model2); HttpClient client = new HttpClient(server); AssertHasEntitySet(client, "http://localhost/v1/$metadata", "People1"); AssertHasEntitySet(client, "http://localhost/v2/$metadata", "People2"); }
public void WhenActionLinksNotManuallyConfigured_ConventionBasedBuilderUsesConventions() { // Arrange string uriTemplate = "http://server/Movies({0})/Watch"; Uri expectedUri = new Uri(string.Format(uriTemplate, 1)); ODataModelBuilder builder = new ODataConventionModelBuilder(); EntityTypeConfiguration <Movie> movie = builder.EntitySet <Movie>("Movies").EntityType; ActionConfiguration watch = movie.Action("Watch"); IEdmModel model = builder.GetEdmModel(); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://server/Movies"); HttpConfiguration configuration = new HttpConfiguration(); string routeName = "Route"; configuration.Routes.MapODataServiceRoute(routeName, null, model); request.SetConfiguration(configuration); request.ODataProperties().RouteName = routeName; UrlHelper urlHelper = new UrlHelper(request); // Act IEdmEntityType movieType = model.SchemaElements.OfType <IEdmEntityType>().SingleOrDefault(); IEdmEntityContainer container = model.SchemaElements.OfType <IEdmEntityContainer>().SingleOrDefault(); IEdmFunctionImport watchAction = container.FunctionImports().SingleOrDefault(); IEdmEntitySet entitySet = container.EntitySets().SingleOrDefault(); ODataSerializerContext serializerContext = new ODataSerializerContext { Model = model, EntitySet = entitySet, Url = urlHelper }; EntityInstanceContext context = new EntityInstanceContext(serializerContext, movieType.AsReference(), new Movie { ID = 1, Name = "Avatar" }); ActionLinkBuilder actionLinkBuilder = model.GetAnnotationValue <ActionLinkBuilder>(watchAction); //Assert Assert.Equal(expectedUri, watch.GetActionLink()(context)); Assert.NotNull(actionLinkBuilder); Assert.Equal(expectedUri, actionLinkBuilder.BuildActionLink(context)); }
public void DollarMetaData_Works_WithDatabaseGeneratedAttribute() { // Arrange string expectedString1 = string.Format(":{0}=\"Identity\"", StoreGeneratedPatternAnnotation.AnnotationName); string expectedString2 = string.Format("=\"{0}\"", StoreGeneratedPatternAnnotation.AnnotationsNamespace); ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet <FormatterPersonWithDatabaseGeneratedOption>("People"); HttpServer server = new HttpServer(); server.Configuration.Routes.MapODataServiceRoute(builder.GetEdmModel()); HttpClient client = new HttpClient(server); // Act var response = client.GetAsync("http://localhost/$metadata").Result; // Assert string result = response.Content.ReadAsStringAsync().Result; Assert.Contains(expectedString1, result); Assert.Contains(expectedString2, result); }