如何将对象(实体)传递给 OData 操作?我可以传递简单类型和 ComplexType,但如果尝试传递 EntityType,我会得到:
Invalid parameter type 'apitest.Models.Product'.
A non-binding parameter type must be either Primitive, Complex,
Collection of Primitive or a Collection of Complex.
编辑:
var modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Product>("Products");
modelBuilder.EntitySet<PurchaseOrder>("PurchaseOrders");
var addProduct = modelBuilder.Entity<PurchaseOrder>().Action("AddProduct");
addProduct.Parameter<Product>("product");
addProduct.ReturnsFromEntitySet<PurchaseOrder>("PurchaseOrders");
我尝试替换addProduct.Parameter<Product>("product");
为:
var productConfig = modelBuilder.StructuralTypes.OfType<EntityTypeConfiguration>().Single(x => x.Name == "Product");
addProduct.SetBindingParameter("product", productConfig, false);
但是我找不到任何关于如何使用 SetBindingParameter 的文档。如果我将 Product 注册为 ComplexType,则第一个代码示例可以工作,但是我不允许将其注册为 Entity。