本文整理汇总了C#中ODataModelBuilder.Function方法的典型用法代码示例。如果您正苦于以下问题:C# ODataModelBuilder.Function方法的具体用法?C# ODataModelBuilder.Function怎么用?C# ODataModelBuilder.Function使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ODataModelBuilder
的用法示例。
在下文中一共展示了ODataModelBuilder.Function方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: UnboundFunctionPathSegmentTest
public UnboundFunctionPathSegmentTest()
{
ODataModelBuilder builder = new ODataModelBuilder();
builder.EntityType<MyCustomer>().HasKey(c => c.Id).Property(c => c.Name);
builder.EntitySet<MyCustomer>("Customers");
FunctionConfiguration function = builder.Function("TopCustomer");
function.ReturnsFromEntitySet<MyCustomer>("Customers");
builder.Function("MyFunction").Returns<string>();
_model = builder.GetEdmModel();
_container = _model.EntityContainers().Single();
}
示例2: CanCreateFunctionWithNoArguments
public void CanCreateFunctionWithNoArguments()
{
// Arrange
// Act
ODataModelBuilder builder = new ODataModelBuilder();
builder.Namespace = "MyNamespace";
builder.ContainerName = "MyContainer";
FunctionConfiguration function = builder.Function("Format");
// Assert
Assert.Equal("Format", function.Name);
Assert.Equal(ProcedureKind.Function, function.Kind);
Assert.NotNull(function.Parameters);
Assert.Empty(function.Parameters);
Assert.Null(function.ReturnType);
Assert.False(function.IsSideEffecting);
Assert.False(function.IsComposable);
Assert.False(function.IsBindable);
Assert.False(function.SupportedInFilter);
Assert.False(function.SupportedInOrderBy);
Assert.Equal("MyContainer.Format", function.ContainerQualifiedName);
Assert.Equal("MyContainer.Format", function.FullName);
Assert.Equal("MyNamespace.MyContainer.Format", function.FullyQualifiedName);
Assert.NotNull(builder.Procedures);
Assert.Equal(1, builder.Procedures.Count());
}
示例3: CanCreateFunctionWithPrimitiveCollectionReturnType
public void CanCreateFunctionWithPrimitiveCollectionReturnType()
{
// Arrange
// Act
ODataModelBuilder builder = new ODataModelBuilder();
FunctionConfiguration function = builder.Function("CreateMessages");
function.ReturnsCollection<string>();
// Assert
Assert.NotNull(function.ReturnType);
Assert.Equal("Collection(Edm.String)", function.ReturnType.FullName);
}
示例4: AddUnboundActionsAndFunctions
private static void AddUnboundActionsAndFunctions(ODataModelBuilder odataModelBuilder)
{
var actionConfiguration = odataModelBuilder.Action("SetAccessLevel");
actionConfiguration.Parameter<int>("ID");
actionConfiguration.Parameter<AccessLevel>("accessLevel");
actionConfiguration.Returns<AccessLevel>();
var functionConfiguration = odataModelBuilder.Function("HasAccessLevel");
functionConfiguration.Parameter<int>("ID");
functionConfiguration.Parameter<AccessLevel>("AccessLevel");
functionConfiguration.Returns<bool>();
var actionConfiguration2 = odataModelBuilder.Action("ResetDataSource");
}
示例5: Returns_ThrowsInvalidOperationIfGenericArgumentIsDateTime
public void Returns_ThrowsInvalidOperationIfGenericArgumentIsDateTime(Type type)
{
// Arrange
ODataModelBuilder builder = new ODataModelBuilder();
FunctionConfiguration function = builder.Function("Format");
MethodInfo method = typeof(FunctionConfiguration)
.GetMethod("Returns")
.MakeGenericMethod(type);
// Act & Assert
Assert.Throws<InvalidOperationException>(
() => method.Invoke(function, new object[] { }),
string.Format("The type '{0}' is not a supported return type.", type.FullName));
}
示例6: Parameter_ThrowsInvalidOperationIfGenericArgumentIsDateTime
public void Parameter_ThrowsInvalidOperationIfGenericArgumentIsDateTime(Type type)
{
// Arrange
ODataModelBuilder builder = new ODataModelBuilder();
FunctionConfiguration function = builder.Function("Format");
MethodInfo method = typeof(FunctionConfiguration)
.GetMethod("Parameter", new[] { typeof(string) })
.MakeGenericMethod(type);
// Act & Assert
Assert.Throws<InvalidOperationException>(
() => method.Invoke(function, new[] { "test" }),
string.Format("The type '{0}' is not a supported parameter type for the parameter test.", type.FullName));
}
示例7: BuildFunctions
private static void BuildFunctions(ODataModelBuilder builder)
{
FunctionConfiguration function = builder.EntityType<DCustomer>().Function("BoundFunction")
.ReturnsCollectionViaEntitySetPath<DCustomer>("bindingParameter");
function.Parameter<Date>("modifiedDate");
function.Parameter<TimeOfDay>("modifiedTime");
function.Parameter<Date?>("nullableModifiedDate");
function.Parameter<TimeOfDay?>("nullableModifiedTime");
function = builder.Function("UnboundFunction").ReturnsCollectionFromEntitySet<DCustomer>("DCustomers");
function.Parameter<Date>("modifiedDate");
function.Parameter<TimeOfDay>("modifiedTime");
function.Parameter<Date?>("nullableModifiedDate");
function.Parameter<TimeOfDay?>("nullableModifiedTime");
}
示例8: AttemptToRemoveNonExistentEntityReturnsFalse
public void AttemptToRemoveNonExistentEntityReturnsFalse()
{
// Arrange
ODataModelBuilder builder = new ODataModelBuilder();
ODataModelBuilder builder2 = new ODataModelBuilder();
ProcedureConfiguration toRemove = builder2.Function("ToRemove");
// Act
bool removedByName = builder.RemoveProcedure("ToRemove");
bool removed = builder.RemoveProcedure(toRemove);
//Assert
Assert.False(removedByName);
Assert.False(removed);
}
示例9: GetEdmModel_CreatesOperationImports_For_UnboundedOperations
public void GetEdmModel_CreatesOperationImports_For_UnboundedOperations()
{
// Arrange
ODataModelBuilder builder = new ODataModelBuilder();
builder.Function("Function").Returns<bool>();
builder.Action("Action").Returns<bool>();
// Act
IEdmModel model = builder.GetEdmModel();
// Assert
Assert.Equal(2, model.EntityContainer.OperationImports().Count());
}
示例10: CanCreateFunctionWithNonbindingParameters
public void CanCreateFunctionWithNonbindingParameters()
{
// Arrange
// Act
ODataModelBuilder builder = new ODataModelBuilder();
FunctionConfiguration function = builder.Function("MyFunction");
function.Parameter<string>("p0");
function.Parameter<int>("p1");
function.Parameter<Address>("p2");
function.CollectionParameter<string>("p3");
function.CollectionParameter<int>("p4");
function.CollectionParameter<ZipCode>("p5");
ParameterConfiguration[] parameters = function.Parameters.ToArray();
ComplexTypeConfiguration[] complexTypes = builder.StructuralTypes.OfType<ComplexTypeConfiguration>().ToArray();
// Assert
Assert.Equal(2, complexTypes.Length);
Assert.Equal(typeof(Address).FullName, complexTypes[0].FullName);
Assert.Equal(typeof(ZipCode).FullName, complexTypes[1].FullName);
Assert.Equal(6, parameters.Length);
Assert.Equal("p0", parameters[0].Name);
Assert.Equal("Edm.String", parameters[0].TypeConfiguration.FullName);
Assert.Equal("p1", parameters[1].Name);
Assert.Equal("Edm.Int32", parameters[1].TypeConfiguration.FullName);
Assert.Equal("p2", parameters[2].Name);
Assert.Equal(typeof(Address).FullName, parameters[2].TypeConfiguration.FullName);
Assert.Equal("p3", parameters[3].Name);
Assert.Equal("Collection(Edm.String)", parameters[3].TypeConfiguration.FullName);
Assert.Equal("p4", parameters[4].Name);
Assert.Equal("Collection(Edm.Int32)", parameters[4].TypeConfiguration.FullName);
Assert.Equal("p5", parameters[5].Name);
Assert.Equal(string.Format("Collection({0})", typeof(ZipCode).FullName), parameters[5].TypeConfiguration.FullName);
}
示例11: CanCreateEdmModel_WithNonBindableFunction
public void CanCreateEdmModel_WithNonBindableFunction()
{
// Arrange
ODataModelBuilder builder = new ODataModelBuilder();
// Act
FunctionConfiguration functionConfiguration = builder.Function("FunctionName");
functionConfiguration.ReturnsFromEntitySet<Customer>("Customers");
IEdmModel model = builder.GetEdmModel();
// Assert
IEdmEntityContainer container = model.EntityContainers().SingleOrDefault();
Assert.NotNull(container);
Assert.Equal(1, container.Elements.OfType<IEdmFunctionImport>().Count());
Assert.Equal(1, container.Elements.OfType<IEdmEntitySet>().Count());
IEdmFunctionImport functionImport = container.Elements.OfType<IEdmFunctionImport>().Single();
IEdmFunction function = functionImport.Function;
Assert.False(function.IsComposable);
Assert.False(function.IsBound);
Assert.False(model.IsAlwaysBindable(function));
Assert.Equal("FunctionName", function.Name);
Assert.NotNull(function.ReturnType);
Assert.NotNull(functionImport.EntitySet);
Assert.Equal("Customers", (functionImport.EntitySet as IEdmEntitySetReferenceExpression).ReferencedEntitySet.Name);
Assert.Equal(typeof(Customer).FullName, (functionImport.EntitySet as IEdmEntitySetReferenceExpression).ReferencedEntitySet.ElementType.FullName());
Assert.Empty(function.Parameters);
}
示例12: CanCreateFunctionWithEntityReturnType
public void CanCreateFunctionWithEntityReturnType()
{
// Arrange
// Act
ODataModelBuilder builder = new ODataModelBuilder();
FunctionConfiguration createGoodCustomer = builder.Function("CreateGoodCustomer").ReturnsFromEntitySet<Customer>("GoodCustomers");
FunctionConfiguration createBadCustomers = builder.Function("CreateBadCustomers").ReturnsCollectionFromEntitySet<Customer>("BadCustomers");
// Assert
EntityTypeConfiguration customer = createGoodCustomer.ReturnType as EntityTypeConfiguration;
Assert.NotNull(customer);
Assert.Equal(typeof(Customer).FullName, customer.FullName);
EntitySetConfiguration goodCustomers = builder.EntitySets.SingleOrDefault(s => s.Name == "GoodCustomers");
Assert.NotNull(goodCustomers);
Assert.Same(createGoodCustomer.EntitySet, goodCustomers);
CollectionTypeConfiguration customers = createBadCustomers.ReturnType as CollectionTypeConfiguration;
Assert.NotNull(customers);
customer = customers.ElementType as EntityTypeConfiguration;
Assert.NotNull(customer);
EntitySetConfiguration badCustomers = builder.EntitySets.SingleOrDefault(s => s.Name == "BadCustomers");
Assert.NotNull(badCustomers);
Assert.Same(createBadCustomers.EntitySet, badCustomers);
}
示例13: HasFeedFunctionLink_ThrowsException_OnNonBindableFunctions
public void HasFeedFunctionLink_ThrowsException_OnNonBindableFunctions()
{
// Arrange
ODataModelBuilder builder = new ODataModelBuilder();
FunctionConfiguration function = builder.Function("NoBindableFunction");
// Act & Assert
Assert.Throws<InvalidOperationException>(
() => function.HasFeedFunctionLink(ctx => new Uri("http://any"), followsConventions: false),
"To register a function link factory, functions must be bindable to the collection of entity. " +
"Function 'NoBindableFunction' does not meet this requirement.");
}
示例14: CanCreateFunctionWithReturnTypeAsNullableByOptionalReturn
public void CanCreateFunctionWithReturnTypeAsNullableByOptionalReturn()
{
// Arrange & Act
ODataModelBuilder builder = new ODataModelBuilder();
FunctionConfiguration function = builder.Function("MyFunction").Returns<Address>();
function.OptionalReturn = false;
// Assert
Assert.False(function.OptionalReturn);
}
示例15: CanCreateFunctionWithNonbindingParameters_AddParameterNonGenericMethod
public void CanCreateFunctionWithNonbindingParameters_AddParameterNonGenericMethod()
{
// Arrange
// Act
ODataModelBuilder builder = new ODataModelBuilder();
FunctionConfiguration function = builder.Function("MyFunction");
function.Parameter(typeof(string), "p0");
function.Parameter(typeof(int), "p1");
function.Parameter(typeof(Address), "p2");
ParameterConfiguration[] parameters = function.Parameters.ToArray();
// Assert
Assert.Equal(3, parameters.Length);
Assert.Equal("p0", parameters[0].Name);
Assert.Equal("Edm.String", parameters[0].TypeConfiguration.FullName);
Assert.Equal("p1", parameters[1].Name);
Assert.Equal("Edm.Int32", parameters[1].TypeConfiguration.FullName);
Assert.Equal("p2", parameters[2].Name);
Assert.Equal(typeof(Address).FullName, parameters[2].TypeConfiguration.FullName);
}