如何在OData中传递hasdynamicproperty函数中的lambda表达式



因为我在hasdynamicproperty函数中传递下面的表达式。但是我得到一个错误不支持的表达式NodeType。

ucs.EntityType.HasDynamicProperties((x(=>new Dictionary(({{"HasPendingServiceOrder",x.ServiceOrders.Any(y=>y.DateCancelled==null&&y.IdSoTypeResult==null(}(;

提前谢谢。

@Rajat我认为你对HasDynamicProperties方法的使用是错误的。当你使用非约定的模型生成器直接调用ODataModelBuilder的fluent API来构建Edm模型时,就会应用这个方法。

如文档所示,使用HasDynamicProperties方法添加动态属性字典属性

例如,考虑像下面这样的CLR类,它具有IDictionary<string, object>属性

public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public IDictionary<string, object> DynamicProperties { get; set; }
}

您可以按照如下方式构建开放实体类型:

var customerEntity = builder.EntityType<Customer>();
customerEntity.HasKey(d => d.Id);
customerEntity.HasProperty(d => d.Name);
customerEntity.HasDynamicProperties(d => d.DynamicProperties);

更新:

有关Edm模型构建者的进一步阅读,请访问OData文档网站此处的

最新更新