本文整理汇总了C#中IEdmModel.GetAvailableProcedures方法的典型用法代码示例。如果您正苦于以下问题:C# IEdmModel.GetAvailableProcedures方法的具体用法?C# IEdmModel.GetAvailableProcedures怎么用?C# IEdmModel.GetAvailableProcedures使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IEdmModel
的用法示例。
在下文中一共展示了IEdmModel.GetAvailableProcedures方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SelectExpandNode
/// <summary>
/// Creates a new instance of the <see cref="SelectExpandNode"/> class describing the set of structural properties,
/// navigation properties, and actions to select and expand for the given <paramref name="selectExpandClause"/>.
/// </summary>
/// <param name="selectExpandClause">The parsed $select and $expand query options.</param>
/// <param name="entityType">The entity type of the entry that would be written.</param>
/// <param name="model">The <see cref="IEdmModel"/> that contains the given entity type.</param>
public SelectExpandNode(SelectExpandClause selectExpandClause, IEdmEntityTypeReference entityType, IEdmModel model)
: this()
{
if (entityType == null)
{
throw Error.ArgumentNull("entityType");
}
if (model == null)
{
throw Error.ArgumentNull("model");
}
HashSet<IEdmStructuralProperty> allStructuralProperties = new HashSet<IEdmStructuralProperty>(entityType.StructuralProperties());
HashSet<IEdmNavigationProperty> allNavigationProperties = new HashSet<IEdmNavigationProperty>(entityType.NavigationProperties());
HashSet<IEdmFunctionImport> allActions = new HashSet<IEdmFunctionImport>(model.GetAvailableProcedures(entityType.EntityDefinition()));
if (selectExpandClause == null)
{
SelectedStructuralProperties = allStructuralProperties;
SelectedNavigationProperties = allNavigationProperties;
SelectedActions = allActions;
}
else
{
if (selectExpandClause.AllSelected)
{
SelectedStructuralProperties = allStructuralProperties;
SelectedNavigationProperties = allNavigationProperties;
SelectedActions = allActions;
}
else
{
BuildSelections(selectExpandClause, allStructuralProperties, allNavigationProperties, allActions);
}
BuildExpansions(selectExpandClause, allNavigationProperties);
// remove expanded navigation properties from the selected navigation properties.
SelectedNavigationProperties.ExceptWith(ExpandedNavigationProperties.Keys);
}
}
示例2: BuildSelections
private void BuildSelections(Selection selection, IEdmEntityTypeReference entityType, IEdmModel model)
{
Contract.Assert(entityType != null);
Contract.Assert(model != null);
HashSet<IEdmStructuralProperty> allStructuralProperties = new HashSet<IEdmStructuralProperty>(entityType.StructuralProperties());
HashSet<IEdmNavigationProperty> allNavigationProperties = new HashSet<IEdmNavigationProperty>(entityType.NavigationProperties());
HashSet<IEdmFunctionImport> allActions = new HashSet<IEdmFunctionImport>(model.GetAvailableProcedures(entityType.EntityDefinition()));
if (selection == null || selection == AllSelection.Instance)
{
SelectedStructuralProperties = allStructuralProperties;
SelectedNavigationProperties = allNavigationProperties;
SelectedActions = allActions;
}
else if (selection == ExpansionsOnly.Instance)
{
// nothing to select.
}
else
{
PartialSelection partialSelection = selection as PartialSelection;
if (partialSelection == null)
{
throw new ODataException(Error.Format(SRResources.SelectionTypeNotSupported, selection.GetType().Name));
}
HashSet<IEdmStructuralProperty> selectedStructuralProperties = new HashSet<IEdmStructuralProperty>();
HashSet<IEdmNavigationProperty> selectedNavigationProperties = new HashSet<IEdmNavigationProperty>();
HashSet<IEdmFunctionImport> selectedActions = new HashSet<IEdmFunctionImport>();
foreach (SelectionItem selectionItem in partialSelection.SelectedItems)
{
PathSelectionItem pathSelection = selectionItem as PathSelectionItem;
if (pathSelection != null)
{
ValidatePathIsSupported(pathSelection.SelectedPath);
Segment segment = pathSelection.SelectedPath.LastSegment;
NavigationPropertySegment navigationPropertySegment = segment as NavigationPropertySegment;
if (navigationPropertySegment != null)
{
if (allNavigationProperties.Contains(navigationPropertySegment.NavigationProperty))
{
selectedNavigationProperties.Add(navigationPropertySegment.NavigationProperty);
}
continue;
}
PropertySegment structuralPropertySegment = segment as PropertySegment;
if (structuralPropertySegment != null)
{
if (allStructuralProperties.Contains(structuralPropertySegment.Property))
{
selectedStructuralProperties.Add(structuralPropertySegment.Property);
}
continue;
}
throw new ODataException(Error.Format(SRResources.SelectionTypeNotSupported, segment.GetType().Name));
}
WildcardSelectionItem wildCardSelection = selectionItem as WildcardSelectionItem;
if (wildCardSelection != null)
{
selectedStructuralProperties = allStructuralProperties;
selectedNavigationProperties = allNavigationProperties;
continue;
}
ContainerQualifiedWildcardSelectionItem wildCardActionSelection = selectionItem as ContainerQualifiedWildcardSelectionItem;
if (wildCardActionSelection != null)
{
IEnumerable<IEdmFunctionImport> actionsInThisContainer = allActions.Where(a => a.Container == wildCardActionSelection.Container);
foreach (IEdmFunctionImport action in actionsInThisContainer)
{
selectedActions.Add(action);
}
continue;
}
throw new ODataException(Error.Format(SRResources.SelectionTypeNotSupported, selectionItem.GetType().Name));
}
SelectedStructuralProperties = selectedStructuralProperties;
SelectedNavigationProperties = selectedNavigationProperties;
SelectedActions = selectedActions;
}
}