protected override Expression VisitNew(NewExpression node) { foreach (MemberExpression propertyExpression in node.Arguments.OfType <MemberExpression>()) { var property = (PropertyInfo)propertyExpression.Member; if (TestContractResolver.IsEntity(property.PropertyType)) { SelectProperties.Add(property); } } return(node); }
public static void Compare(IList fromDb, IList fromOe, ModelBuilder.OeEdmModelMetadataProvider metadataProvider, IReadOnlyList <IncludeVisitor.Include> includes) { var contractResolver = new TestContractResolver(metadataProvider, includes); var settings = new JsonSerializerSettings() { ContractResolver = contractResolver, DateFormatString = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffffff", DateTimeZoneHandling = DateTimeZoneHandling.Utc, Formatting = Newtonsoft.Json.Formatting.Indented, ReferenceLoopHandling = ReferenceLoopHandling.Ignore, NullValueHandling = NullValueHandling.Ignore }; String jsonDb = JsonConvert.SerializeObject(fromDb, settings); contractResolver.DisableWhereOrder = true; String jsonOe = JsonConvert.SerializeObject(fromOe, settings); Assert.Equal(jsonDb, jsonOe); }
public virtual async Task Execute <T, TResult>(QueryParameters <T, TResult> parameters) { IList fromOe = await ExecuteOe <TResult>(parameters.RequestUri, parameters.NavigationNextLink, parameters.PageSize).ConfigureAwait(false); ODataUri odataUri = ParseUri(parameters.RequestUri); IEdmModel edmModel = EdmModel.GetEdmModel(odataUri.Path); Db.OeDataAdapter oeDataAdapter = edmModel.GetDataAdapter(edmModel.EntityContainer); Db.OeDataAdapter dbDataAdapter = ((ITestDbDataAdapter)oeDataAdapter).DbDataAdapter; IList fromDb; IReadOnlyList <IncludeVisitor.Include> includes; using (var dataContext = (DbContext)dbDataAdapter.CreateDataContext()) fromDb = TestHelper.ExecuteDb(dbDataAdapter, dataContext, parameters.Expression, out includes); //fix null navigation property Order where aggregate Order(Name) if (typeof(TResult) == typeof(Object)) { foreach (SortedDictionary <String, Object> item in fromOe) { foreach (KeyValuePair <String, Object> keyValue in item.Where(i => i.Value == null).ToList()) { PropertyInfo navigationProperty = typeof(T).GetProperty(keyValue.Key); if (navigationProperty != null && TestContractResolver.IsEntity(navigationProperty.PropertyType) && !includes.Any(i => i.Property == navigationProperty)) { item.Remove(keyValue.Key); } } } } Console.WriteLine(parameters.RequestUri); TestHelper.Compare(fromDb, fromOe, MetadataProvider, includes); }
public EmptyCollectionValueProvider(TestContractResolver contractResolver, IValueProvider defaultValueProvider, Func <IEnumerable, IList> lambda) { _contractResolver = contractResolver; _defaultValueProvider = defaultValueProvider; _lambda = lambda; }