public RemoteProvider(WebHttpClient<IQueryService> client) { this.client = client; this.visitor = new StripQuoteVisitor(); this.resolver = new TypeResolver(assemblies: null, knownTypes: client.knownTypes ?? new Type[0]); CustomExpressionXmlConverter queryconverter = new QueryExpressionXmlConverter(creator: null, resolver: resolver); CustomExpressionXmlConverter knowntypeconverter = new KnownTypeExpressionXmlConverter(resolver); this.serializer = new ExpressionSerializer(resolver, new CustomExpressionXmlConverter[] { queryconverter, knowntypeconverter }); }
public RemoteProvider(WebHttpClient <IQueryService> client) { this.client = client; visitor = new StripQuoteVisitor(); resolver = new TypeResolver(null, client.knownTypes ?? new Type[0]); CustomExpressionXmlConverter queryconverter = new QueryExpressionXmlConverter(null, resolver); CustomExpressionXmlConverter knowntypeconverter = new KnownTypeExpressionXmlConverter(resolver); serializer = new ExpressionSerializer(resolver, new[] { queryconverter, knowntypeconverter }); }
static ExpressionSerializer CreateSerializer() { var assemblies = new Assembly[] { typeof(Customer).Assembly, typeof(ExpressionType).Assembly, typeof(IQueryable).Assembly }; var resolver = new TypeResolver(assemblies, new Type[] { typeof(Customer), typeof(Order), typeof(Product), typeof(Supplier), typeof(Shipper) }); //var creator = new QueryCreator(); CustomExpressionXmlConverter queryconverter = new QueryExpressionXmlConverter(creator: null, resolver: resolver); CustomExpressionXmlConverter knowntypeconverter = new KnownTypeExpressionXmlConverter(resolver); ExpressionSerializer serializer = new ExpressionSerializer(resolver, new CustomExpressionXmlConverter[] { queryconverter, knowntypeconverter }); return serializer; //ExpressionSerializer serializer = new ExpressionSerializer() }
public NorthwindService() { var connectionStrings = System.Configuration.ConfigurationManager.ConnectionStrings; this.connectionString = connectionStrings["northwind"].ConnectionString; this.creator = new QueryCreator(this.FnGetDatabaseObjects); this.assemblies = new Assembly[] { typeof(Customer).Assembly, typeof(ExpressionType).Assembly, typeof(IQueryable).Assembly }; this.resolver = new TypeResolver(assemblies, new Type[] { typeof(Customer), typeof(Order), typeof(Product), typeof(Supplier), typeof(Shipper) }); CustomExpressionXmlConverter queryconverter = new QueryExpressionXmlConverter(creator, this.resolver); CustomExpressionXmlConverter knowntypeconverter = new KnownTypeExpressionXmlConverter(this.resolver); this.serializer = new ExpressionSerializer(resolver, new CustomExpressionXmlConverter[] { queryconverter, knowntypeconverter }); }
public void QueryExpressionXmlConverterTest() { Type elementType = typeof(Customer); var creator = new QueryCreator(this.FnGetObjects); var converter = new QueryExpressionXmlConverter(creator, this.resolver); bool success; XElement x; Expression e; MethodCallExpression m; ConstantExpression cx; IQueryProvider provider; //the client Query. IQueryProvider has not real data. Query<Customer> query = new Query<Customer>(default(IQueryProvider)); provider = ((IQueryable)query).Provider; IQueryable<Customer> queryable; queryable = from c in query where c.ID == null //initialized with properties == null select c; //serialize to XML e = Expression.Constant(queryable); success = converter.TrySerialize(e, out x); //deserialize to ConstantExpression(Query) success = converter.TryDeserialize(x, out e); cx = (ConstantExpression)e; Query<Customer> serverquery = (Query<Customer>)cx.Value; //upon deserialization, should have a new IQueryProvider Assert.AreNotEqual(provider, ((IQueryable)serverquery).Provider); provider = ((IQueryable)serverquery).Provider; //Execute Query on server side. int count = serverquery.Count(); }