本文整理汇总了C#中IEdmProperty类的典型用法代码示例。如果您正苦于以下问题:C# IEdmProperty类的具体用法?C# IEdmProperty怎么用?C# IEdmProperty使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IEdmProperty类属于命名空间,在下文中一共展示了IEdmProperty类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OrderByProperty
public static IQueryable OrderByProperty(IQueryable query, IEdmModel model, IEdmProperty property, OrderByDirection direction, Type type, bool alreadyOrdered = false)
{
// property aliasing
string propertyName = EdmLibHelpers.GetClrPropertyName(property, model);
LambdaExpression orderByLambda = GetPropertyAccessLambda(type, propertyName);
return OrderBy(query, orderByLambda, direction, type, alreadyOrdered);
}
示例2: GetPropertyInfo
/// <summary>
/// Gets the property info for the EDM property declared on this type.
/// </summary>
/// <param name="structuredType">The structured type to get the property on.</param>
/// <param name="property">Property instance to get the property info for.</param>
/// <param name="model">The model containing annotations.</param>
/// <returns>Returns the PropertyInfo object for the specified EDM property.</returns>
internal PropertyInfo GetPropertyInfo(IEdmStructuredType structuredType, IEdmProperty property, IEdmModel model)
{
DebugUtils.CheckNoExternalCallers();
Debug.Assert(structuredType != null, "structuredType != null");
Debug.Assert(property != null, "property != null");
Debug.Assert(model != null, "model != null");
Debug.Assert(property.GetCanReflectOnInstanceTypeProperty(model), "property.CanReflectOnInstanceTypeProperty()");
#if DEBUG
Debug.Assert(structuredType.ContainsProperty(property), "The structuredType does not define the specified property.");
#endif
if (this.propertyInfosDeclaredOnThisType == null)
{
this.propertyInfosDeclaredOnThisType = new Dictionary<IEdmProperty, PropertyInfo>(ReferenceEqualityComparer<IEdmProperty>.Instance);
}
PropertyInfo propertyInfo;
if (!this.propertyInfosDeclaredOnThisType.TryGetValue(property, out propertyInfo))
{
BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.Instance;
propertyInfo = structuredType.GetInstanceType(model).GetProperty(property.Name, bindingFlags);
if (propertyInfo == null)
{
throw new ODataException(Strings.PropertyInfoTypeAnnotation_CannotFindProperty(structuredType.ODataFullName(), structuredType.GetInstanceType(model), property.Name));
}
this.propertyInfosDeclaredOnThisType.Add(property, propertyInfo);
}
Debug.Assert(propertyInfo != null, "propertyInfo != null");
return propertyInfo;
}
示例3: EdmPropertyValueBinding
public EdmPropertyValueBinding(IEdmProperty boundProperty, IEdmExpression value)
{
EdmUtil.CheckArgumentNull<IEdmProperty>(boundProperty, "boundProperty");
EdmUtil.CheckArgumentNull<IEdmExpression>(value, "value");
this.boundProperty = boundProperty;
[email protected] = value;
}
示例4: EdmPropertyReferenceExpression
public EdmPropertyReferenceExpression(IEdmExpression baseExpression, IEdmProperty referencedProperty)
{
EdmUtil.CheckArgumentNull<IEdmExpression>(baseExpression, "baseExpression");
EdmUtil.CheckArgumentNull<IEdmProperty>(referencedProperty, "referencedPropert");
this.baseExpression = baseExpression;
this.referencedProperty = referencedProperty;
}
示例5: GeneratePropertyAccessQueryNode
/// <summary>
/// Generates a bound query node representing an <see cref="IEdmProperty"/> given an already semantically bound parent node.
/// </summary>
/// <param name="parentNode">The semantically bound source node of this end path token</param>
/// <param name="property">The <see cref="IEdmProperty"/> that will be bound to this node. Must not be primitive collection</param>
/// <returns>QueryNode bound to this property.</returns>
internal static QueryNode GeneratePropertyAccessQueryNode(SingleValueNode parentNode, IEdmProperty property)
{
ExceptionUtils.CheckArgumentNotNull(parentNode, "parent");
ExceptionUtils.CheckArgumentNotNull(property, "property");
// TODO: Remove this check.
// We should verify that the top level of an expression is a bool rather than arbitrarily restrict property types.
// We can get here if there is a query like $filter=MyCollectionProperty eq 'foo' or something.
// If it was $filter=MyCollectionProperty/any(...) then we would have gone down the 'NonRootSegment' code path instead of this one
if (property.Type.IsNonEntityCollectionType())
{
// if this happens to be a top level node (i.e. $filter=MyCollection), then it will fail further up the chain, so
// don't need to worry about checking for that here.
return new CollectionPropertyAccessNode(parentNode, property);
}
if (property.PropertyKind == EdmPropertyKind.Navigation)
{
// These are error cases in practice, but we let ourselves throw later for better context-sensitive error messages
var edmNavigationProperty = (IEdmNavigationProperty)property;
var singleEntityParentNode = (SingleEntityNode)parentNode;
if (edmNavigationProperty.TargetMultiplicity() == EdmMultiplicity.Many)
{
return new CollectionNavigationNode(edmNavigationProperty, singleEntityParentNode);
}
return new SingleNavigationNode(edmNavigationProperty, singleEntityParentNode);
}
return new SingleValuePropertyAccessNode(parentNode, property);
}
示例6: SetDeclaredProperty
internal static void SetDeclaredProperty(object resource, EdmTypeKind propertyKind, string propertyName,
object propertyValue, IEdmProperty edmProperty, ODataDeserializerContext readContext)
{
if (propertyKind == EdmTypeKind.Collection)
{
SetCollectionProperty(resource, edmProperty, propertyValue, propertyName);
}
else
{
if (!readContext.IsUntyped)
{
if (propertyKind == EdmTypeKind.Primitive)
{
propertyValue = EdmPrimitiveHelpers.ConvertPrimitiveValue(propertyValue,
GetPropertyType(resource, propertyName));
}
else if (propertyKind == EdmTypeKind.Enum)
{
propertyValue = EnumDeserializationHelpers.ConvertEnumValue(propertyValue,
GetPropertyType(resource, propertyName));
}
}
SetProperty(resource, propertyName, propertyValue);
}
}
示例7: NullValueReadBehaviorKind
/// <summary>
/// Gets the reader behavior for null property value on the specified property.
/// </summary>
/// <param name="model">The model containing the annotation.</param>
/// <param name="property">The property to check.</param>
/// <returns>The behavior to use when reading null value for this property.</returns>
public static ODataNullValueBehaviorKind NullValueReadBehaviorKind(this IEdmModel model, IEdmProperty property)
{
ExceptionUtils.CheckArgumentNotNull(model, "model");
ExceptionUtils.CheckArgumentNotNull(property, "property");
ODataEdmPropertyAnnotation annotation = model.GetAnnotationValue<ODataEdmPropertyAnnotation>(property);
return annotation == null ? ODataNullValueBehaviorKind.Default : annotation.NullValueReadBehaviorKind;
}
示例8: PropertyAccessPathSegment
/// <summary>
/// Initializes a new instance of the <see cref="PropertyAccessPathSegment" /> class.
/// </summary>
/// <param name="property">The property being accessed by this segment.</param>
public PropertyAccessPathSegment(IEdmProperty property)
{
if (property == null)
{
throw Error.ArgumentNull("property");
}
Property = property;
PropertyName = property.Name;
}
示例9: OrderByPropertyNode
/// <summary>
/// Initializes a new instance of the <see cref="OrderByPropertyNode"/> class.
/// </summary>
/// <param name="property">The <see cref="IEdmProperty"/> for this node.</param>
/// <param name="direction">The <see cref="OrderByDirection"/> for this node.</param>
public OrderByPropertyNode(IEdmProperty property, OrderByDirection direction)
: base(direction)
{
if (property == null)
{
throw Error.ArgumentNull("property");
}
Property = property;
}
示例10: PropertyAccessPathSegment
/// <summary>
/// Initializes a new instance of the <see cref="PropertyAccessPathSegment" /> class.
/// </summary>
/// <param name="previous">The previous segment in the path.</param>
/// <param name="property">The property being accessed by this segment.</param>
public PropertyAccessPathSegment(ODataPathSegment previous, IEdmProperty property)
: base(previous)
{
if (property == null)
{
throw Error.ArgumentNull("property");
}
EdmType = property.Type.Definition;
Property = property;
}
示例11: AddProperty
/// <summary>
/// Adds the <paramref name="property"/> to this type.
/// <see cref="IEdmProperty.DeclaringType"/> of the <paramref name="property"/> must be this type.
/// </summary>
/// <param name="property">The property being added.</param>
public void AddProperty(IEdmProperty property)
{
EdmUtil.CheckArgumentNull(property, "property");
if (!Object.ReferenceEquals(this, property.DeclaringType))
{
throw new InvalidOperationException(Edm.Strings.EdmModel_Validator_Semantic_DeclaringTypeMustBeCorrect(property.Name));
}
this.declaredProperties.Add(property);
this.propertiesDictionary.Clear(null);
}
示例12: SetScaleMeasuresAnnotation
public static void SetScaleMeasuresAnnotation(this EdmModel model, IEdmProperty property, byte scale)
{
if (model == null) throw new ArgumentNullException("model");
if (property == null) throw new ArgumentNullException("property");
var target = property;
var term = ScaleTerm;
var expression = new EdmIntegerConstant(scale);
var annotation = new EdmAnnotation(target, term, expression);
annotation.SetSerializationLocation(model, property.ToSerializationLocation());
model.AddVocabularyAnnotation(annotation);
}
示例13: SetISOCurrencyMeasuresAnnotation
public static void SetISOCurrencyMeasuresAnnotation(this EdmModel model, IEdmProperty property, string isoCurrency)
{
if (model == null) throw new ArgumentNullException("model");
if (property == null) throw new ArgumentNullException("property");
var target = property;
var term = ISOCurrencyTerm;
var expression = new EdmStringConstant(isoCurrency);
var annotation = new EdmAnnotation(target, term, expression);
annotation.SetSerializationLocation(model, property.ToSerializationLocation());
model.AddVocabularyAnnotation(annotation);
}
示例14: SetComputedAnnotation
public static void SetComputedAnnotation(EdmModel model, IEdmProperty target)
{
EdmUtil.CheckArgumentNull(model, "model");
EdmUtil.CheckArgumentNull(target, "target");
IEdmBooleanConstantExpression val = new EdmBooleanConstant(true);
IEdmValueTerm term = CoreVocabularyModel.ComputedTerm;
Debug.Assert(term != null, "term!=null");
EdmAnnotation annotation = new EdmAnnotation(target, term, val);
annotation.SetSerializationLocation(model, EdmVocabularyAnnotationSerializationLocation.Inline);
model.SetVocabularyAnnotation(annotation);
}
示例15: GetPropertyInfo
/// <summary>
/// Gets the property info for the EDM property on the specified type.
/// </summary>
/// <param name="typeReference">The type to get the property on.</param>
/// <param name="property">Property instance to get the property info for.</param>
/// <param name="model">Model containing annotations.</param>
/// <returns>Returns the PropertyInfo object for the specified property.</returns>
/// <remarks>The method searches this type as well as all its base types for the property.</remarks>
internal static PropertyInfo GetPropertyInfo(this IEdmStructuredTypeReference typeReference, IEdmProperty property, IEdmModel model)
{
DebugUtils.CheckNoExternalCallers();
Debug.Assert(typeReference != null, "typeReference != null");
Debug.Assert(property != null, "property != null");
Debug.Assert(model != null, "model != null");
Debug.Assert(property.GetCanReflectOnInstanceTypeProperty(model), "property.CanReflectOnInstanceTypeProperty()");
#if DEBUG
Debug.Assert(typeReference.ContainsProperty(property), "The typeReference does not define the specified property.");
#endif
IEdmStructuredType structuredType = typeReference.StructuredDefinition();
return PropertyInfoTypeAnnotation.GetPropertyInfoTypeAnnotation(structuredType, model).GetPropertyInfo(structuredType, property, model);
}