本文整理汇总了C#中ODataQueryContext类的典型用法代码示例。如果您正苦于以下问题:C# ODataQueryContext类的具体用法?C# ODataQueryContext怎么用?C# ODataQueryContext使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ODataQueryContext类属于命名空间,在下文中一共展示了ODataQueryContext类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: SelectExpandQueryOption
/// <summary>
/// Initializes a new instance of the <see cref="SelectExpandQueryOption"/> class.
/// </summary>
/// <param name="select">The $select query parameter value.</param>
/// <param name="expand">The $expand query parameter value.</param>
/// <param name="context">The <see cref="ODataQueryContext"/> which contains the <see cref="IEdmModel"/> and some type information.</param>
/// <param name="queryOptionParser">The <see cref="ODataQueryOptionParser"/> which is used to parse the query option.</param>
public SelectExpandQueryOption(string select, string expand, ODataQueryContext context,
ODataQueryOptionParser queryOptionParser)
{
if (context == null)
{
throw Error.ArgumentNull("context");
}
if (String.IsNullOrEmpty(select) && String.IsNullOrEmpty(expand))
{
throw Error.Argument(SRResources.SelectExpandEmptyOrNull);
}
if (queryOptionParser == null)
{
throw Error.ArgumentNull("queryOptionParser");
}
IEdmEntityType entityType = context.ElementType as IEdmEntityType;
if (entityType == null)
{
throw Error.Argument("context", SRResources.SelectNonEntity, context.ElementType.ToTraceString());
}
Context = context;
RawSelect = select;
RawExpand = expand;
Validator = new SelectExpandQueryValidator();
_queryOptionParser = queryOptionParser;
}
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:37,代码来源:SelectExpandQueryOption.cs
示例2: ODataQueryOptions
/// <summary>
/// Initializes a new instance of the <see cref="ODataQueryOptions"/> class based on the incoming request and some metadata information from
/// the <see cref="ODataQueryContext"/>.
/// </summary>
/// <param name="context">The <see cref="ODataQueryContext"/> which contains the <see cref="IEdmModel"/> and some type information</param>
/// <param name="request">The incoming request message</param>
public ODataQueryOptions(ODataQueryContext context, HttpRequestMessage request)
{
if (context == null)
{
throw Error.ArgumentNull("context");
}
if (request == null)
{
throw Error.ArgumentNull("request");
}
// remember the context
Context = context;
// Parse the query from request Uri
RawValues = new ODataRawQueryOptions();
IEnumerable<KeyValuePair<string, string>> queryParameters = request.GetQueryNameValuePairs();
foreach (KeyValuePair<string, string> kvp in queryParameters)
{
switch (kvp.Key)
{
case "$filter":
RawValues.Filter = kvp.Value;
ThrowIfEmpty(kvp.Value, "$filter");
Filter = new FilterQueryOption(kvp.Value, context);
break;
case "$orderby":
RawValues.OrderBy = kvp.Value;
ThrowIfEmpty(kvp.Value, "$orderby");
OrderBy = new OrderByQueryOption(kvp.Value, context);
break;
case "$top":
RawValues.Top = kvp.Value;
ThrowIfEmpty(kvp.Value, "$top");
Top = new TopQueryOption(kvp.Value, context);
break;
case "$skip":
RawValues.Skip = kvp.Value;
ThrowIfEmpty(kvp.Value, "$skip");
Skip = new SkipQueryOption(kvp.Value, context);
break;
case "$select":
RawValues.Select = kvp.Value;
break;
case "$inlinecount":
RawValues.InlineCount = kvp.Value;
break;
case "$expand":
RawValues.Expand = kvp.Value;
break;
case "$skiptoken":
RawValues.SkipToken = kvp.Value;
break;
default:
// we don't throw if we can't recognize the query
break;
}
}
}
开发者ID:chrisortman,项目名称:aspnetwebstack,代码行数:66,代码来源:ODataQueryOptions.cs
示例3: Validate_DepthChecks_DollarLevels
public void Validate_DepthChecks_DollarLevels(string expand, int maxExpansionDepth)
{
// Arrange
var validator = new SelectExpandQueryValidator();
var builder = new ODataConventionModelBuilder();
builder.EntitySet<ODataLevelsTest.LevelsEntity>("Entities");
IEdmModel model = builder.GetEdmModel();
var context = new ODataQueryContext(model, typeof(ODataLevelsTest.LevelsEntity));
var selectExpandQueryOption = new SelectExpandQueryOption(null, expand, context);
selectExpandQueryOption.LevelsMaxLiteralExpansionDepth = 1;
// Act & Assert
Assert.Throws<ODataException>(
() => validator.Validate(
selectExpandQueryOption,
new ODataValidationSettings { MaxExpansionDepth = maxExpansionDepth }),
String.Format(
CultureInfo.CurrentCulture,
"The request includes a $expand path which is too deep. The maximum depth allowed is {0}. " +
"To increase the limit, set the 'MaxExpansionDepth' property on EnableQueryAttribute or ODataValidationSettings.",
maxExpansionDepth));
Assert.DoesNotThrow(
() => validator.Validate(
selectExpandQueryOption,
new ODataValidationSettings { MaxExpansionDepth = maxExpansionDepth + 1 }));
}
开发者ID:shailendra9,项目名称:WebApi,代码行数:27,代码来源:SelectExpandQueryValidatorTest.cs
示例4: ODataQueryOptions
/// <summary>
/// Initializes a new instance of the <see cref="ODataQueryOptions"/> class based on the incoming request and some metadata information from
/// the <see cref="ODataQueryContext"/>.
/// </summary>
/// <param name="context">The <see cref="ODataQueryContext"/> which contains the <see cref="IEdmModel"/> and some type information.</param>
/// <param name="request">The incoming request message.</param>
public ODataQueryOptions(ODataQueryContext context, HttpRequest request)
{
if (context == null)
{
throw Error.ArgumentNull("context");
}
if (request == null)
{
throw Error.ArgumentNull("request");
}
_assemblyProvider = request.AssemblyProvider();
Context = context;
Request = request;
RawValues = new ODataRawQueryOptions();
var queryOptionDict = request.Query.ToDictionary(p => p.Key, p => p.Value.FirstOrDefault());
_queryOptionParser = new ODataQueryOptionParser(
context.Model,
context.ElementType,
context.NavigationSource,
queryOptionDict);
BuildQueryOptions(queryOptionDict);
}
开发者ID:emreolgun,项目名称:WebApi,代码行数:33,代码来源:ODataQueryOptions.cs
示例5: Constructor_TakingClrType_WithPrimitiveTypes
public void Constructor_TakingClrType_WithPrimitiveTypes(Type type)
{
// Arrange & Act
ODataQueryContext context = new ODataQueryContext(EdmCoreModel.Instance, type);
// Assert
Assert.True(context.ElementClrType == type);
}
开发者ID:ahmetgoktas,项目名称:aspnetwebstack,代码行数:8,代码来源:ODataQueryContextTests.cs
示例6: Value_Returns_ParsedSkipValue
public void Value_Returns_ParsedSkipValue(string skipValue, int expectedValue)
{
var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetEdmModel();
var context = new ODataQueryContext(model, typeof(Customer));
var skip = new SkipQueryOption(skipValue, context);
Assert.Equal(expectedValue, skip.Value);
}
开发者ID:naulizzang,项目名称:aspnetwebstack,代码行数:8,代码来源:SkipQueryOptionTests.cs
示例7: ODataQueryValidatorTest
public ODataQueryValidatorTest()
{
_validator = new ODataQueryValidator();
_builder = new ODataConventionModelBuilder();
_builder.EntitySet<QueryCompositionCustomer>("Customer");
_model = _builder.GetEdmModel();
_context = new ODataQueryContext(_model, typeof(QueryCompositionCustomer));
}
开发者ID:Swethach,项目名称:aspnetwebstack,代码行数:8,代码来源:ODataQueryValidatorTest.cs
示例8: ApplyQueryOptions
public virtual object ApplyQueryOptions(object value, HttpRequest request, ActionDescriptor actionDescriptor, AssembliesResolver assembliesResolver)
{
var elementClrType = value is IEnumerable
? TypeHelper.GetImplementedIEnumerableType(value.GetType())
: value.GetType();
var model = request.ODataProperties().Model;
if (model == null)
{
throw Error.InvalidOperation(SRResources.QueryGetModelMustNotReturnNull);
}
var queryContext = new ODataQueryContext(
model,
elementClrType,
assembliesResolver,
request.ODataProperties().Path
);
var queryOptions = new ODataQueryOptions(queryContext, request, assembliesResolver);
var enumerable = value as IEnumerable;
if (enumerable == null)
{
// response is single entity.
return value;
}
// response is a collection.
var query = (value as IQueryable) ?? enumerable.AsQueryable();
query = queryOptions.ApplyTo(query,
new ODataQuerySettings
{
// TODO: If we are using SQL, set this to false
// otherwise if it is entities in code then
// set it to true
HandleNullPropagation =
//HandleNullPropagationOption.True
HandleNullPropagationOptionHelper.GetDefaultHandleNullPropagationOption(query),
PageSize = actionDescriptor.PageSize(),
SearchDerivedTypeWhenAutoExpand = true
},
AllowedQueryOptions.None);
// Determine if this result should be a single entity
if (ODataCountMediaTypeMapping.IsCountRequest(request))
{
long? count = request.ODataProperties().TotalCount;
if (count.HasValue)
{
// Return the count value if it is a $count request.
return count.Value;
}
}
return query;
}
开发者ID:joshcomley,项目名称:WebApi,代码行数:58,代码来源:EnableQueryAttribute.cs
示例9: Ctor_ThrowsArgument_IfContextIsNotForAnEntityType
public void Ctor_ThrowsArgument_IfContextIsNotForAnEntityType()
{
ODataQueryContext context = new ODataQueryContext(_model.Model, typeof(int));
Assert.ThrowsArgument(
() => new SelectExpandQueryOption(select: "Name", expand: "Name", context: context),
"context",
"The type 'Edm.Int32' is not an entity type. Only entity types support $select and $expand.");
}
开发者ID:modulexcite,项目名称:aspnetwebstack-1,代码行数:9,代码来源:SelectExpandQueryOptionTest.cs
示例10: CanConstructValidFilterQuery
public void CanConstructValidFilterQuery(string orderbyValue)
{
var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetEdmModel();
var context = new ODataQueryContext(model, typeof(Customer));
var orderby = new OrderByQueryOption(orderbyValue, context);
Assert.Same(context, orderby.Context);
Assert.Equal(orderbyValue, orderby.RawValue);
}
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:9,代码来源:OrderByQueryOptionTest.cs
示例11: ApplyInValidOrderbyQueryThrows
public void ApplyInValidOrderbyQueryThrows(string orderbyValue)
{
var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetEdmModel();
var context = new ODataQueryContext(model, typeof(Customer));
var orderby = new OrderByQueryOption(orderbyValue, context);
Assert.Throws<ODataException>(() =>
orderby.ApplyTo(ODataQueryOptionTest.Customers));
}
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:9,代码来源:OrderByQueryOptionTest.cs
示例12: CanConstructValidFilterQuery
public void CanConstructValidFilterQuery(string filterValue)
{
var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetEdmModel();
var context = new ODataQueryContext(model, typeof(Customer), "Customers");
var filter = new FilterQueryOption(filterValue, context);
Assert.Same(context, filter.Context);
Assert.Equal(filterValue, filter.RawValue);
}
开发者ID:chrisortman,项目名称:aspnetwebstack,代码行数:9,代码来源:FilterQueryOptionTest.cs
示例13: CanConstructValidFilterQuery
public void CanConstructValidFilterQuery(string skipValue)
{
var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetEdmModel();
var context = new ODataQueryContext(model, typeof(Customer));
var skip = new SkipQueryOption(skipValue, context);
Assert.Same(context, skip.Context);
Assert.Equal(skipValue, skip.RawValue);
}
开发者ID:naulizzang,项目名称:aspnetwebstack,代码行数:9,代码来源:SkipQueryOptionTests.cs
示例14: ApplyInValidSkipQueryThrows
public void ApplyInValidSkipQueryThrows(string skipValue)
{
var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetEdmModel();
var context = new ODataQueryContext(model, typeof(Customer));
var skip = new SkipQueryOption(skipValue, context);
Assert.Throws<ODataException>(() =>
skip.ApplyTo(ODataQueryOptionTest.Customers));
}
开发者ID:naulizzang,项目名称:aspnetwebstack,代码行数:9,代码来源:SkipQueryOptionTests.cs
示例15: Ctor_ThrowsArgument_IfBothSelectAndExpandAreNull
public void Ctor_ThrowsArgument_IfBothSelectAndExpandAreNull()
{
_model.Model.SetAnnotationValue<ClrTypeAnnotation>(_model.Customer, new ClrTypeAnnotation(typeof(Customer)));
ODataQueryContext context = new ODataQueryContext(_model.Model, typeof(Customer));
Assert.Throws<ArgumentException>(
() => new SelectExpandQueryOption(select: null, expand: null, context: context),
"'select' and 'expand' cannot be both null or empty.");
}
开发者ID:modulexcite,项目名称:aspnetwebstack-1,代码行数:9,代码来源:SelectExpandQueryOptionTest.cs
示例16: Ctor_SuccedsIfEntityTypesMatch
public void Ctor_SuccedsIfEntityTypesMatch()
{
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Customer>("Customers");
ODataQueryContext context = new ODataQueryContext(builder.GetEdmModel(), typeof(Customer));
ODataQueryOptions<Customer> query = new ODataQueryOptions<Customer>(context, new HttpRequestMessage(HttpMethod.Get, "http://server/?$top=10"));
Assert.Equal("10", query.Top.RawValue);
}
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:10,代码来源:ODataQueryOptionsOfTEntityTest.cs
示例17: Ctor_ThrowsArgumentNull_QueryOptionParser
public void Ctor_ThrowsArgumentNull_QueryOptionParser()
{
// Arrange
ODataQueryContext context = new ODataQueryContext(_model.Model, typeof(int));
// Act & Assert
Assert.ThrowsArgumentNull(
() => new SelectExpandQueryOption("select", "expand", context, queryOptionParser: null),
"queryOptionParser");
}
开发者ID:joshcomley,项目名称:WebApi,代码行数:10,代码来源:SelectExpandQueryOptionTest.cs
示例18: Ctor_Throws_Argument_IfContextIsUnTyped
public void Ctor_Throws_Argument_IfContextIsUnTyped()
{
IEdmModel model = EdmCoreModel.Instance;
IEdmType elementType = EdmCoreModel.Instance.GetPrimitiveType(EdmPrimitiveTypeKind.Int32);
ODataQueryContext context = new ODataQueryContext(model, elementType);
Assert.ThrowsArgument(
() => new ODataQueryOptions<int>(context, new HttpRequestMessage()),
"context", "The property 'ElementClrType' of ODataQueryContext cannot be null.");
}
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:10,代码来源:ODataQueryOptionsOfTEntityTest.cs
示例19: Ctor_Throws_Argument_IfContextIsofDifferentEntityType
public void Ctor_Throws_Argument_IfContextIsofDifferentEntityType()
{
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Customer>("Customers");
ODataQueryContext context = new ODataQueryContext(builder.GetEdmModel(), typeof(Customer));
Assert.ThrowsArgument(
() => new ODataQueryOptions<int>(context, new HttpRequestMessage()),
"context", "The entity type 'System.Web.OData.TestCommon.Models.Customer' does not match the expected entity type 'System.Int32' as set on the query context.");
}
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:11,代码来源:ODataQueryOptionsOfTEntityTest.cs
示例20: ContructorWithOnlyType
public void ContructorWithOnlyType(Type type)
{
// Arrange & Act
ODataQueryContext context = new ODataQueryContext(type);
// Assert
Assert.Null(context.Model);
Assert.True(context.EntityClrType == type);
Assert.Null(context.EntitySet);
Assert.True(context.IsPrimitiveClrType);
}
开发者ID:marojeri,项目名称:aspnetwebstack,代码行数:11,代码来源:ODataQueryContextTests.cs
注:本文中的ODataQueryContext类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论