WebAPI AND Odata V4问题:包含实体的ComplexType



在复杂类型中添加关系时出现以下错误。如何解决此问题。我大快朵颐地读到OData V3有问题,但OData V4没有。

复杂类型"Microsoft.OneIM.ActiveIncident.Contracts.IncidentImpact"通过属性"ImpactedServices"引用实体类型"Microsoft.OneIM.ActiveIncident.Contracts.ImpactedService"。

位于System.Web.OData.Builder.ODataConventionModelBuilder.MapComplexType(ComplexTypeConfiguration complexType)位于System.Web.OData.Builder.ODataConventionModelBuilder.MapType(StructurelTypeConfiguration edmType)位于System.Web.OData.Builder.ODataConventionModelBuilder.AddComplexType(类型类型)位于System.Web.OData.Builder.ODataConventionModelBuilder.ReconfigureEntityTypesAsComplexType(EntityTypeConfiguration[]配置错误的EntityTypes)位于System.Web.OData.Builder.ODataConventionModelBuilder.RedicoverComplexTypes()位于System.Web.OData.Builder.ODataConventionModelBuilder.GetEdmMode()位于c:\OneIM\EngSys\OneIM\ActiveIncident\src\Product\Service\Models\ModelBuilder.cs:line 42中的Microsoft.OneIM.ActiveIncident.Service.ModelBuilder.BuildIncidentModels()位于c:\OneIM\EngSys\OneIM\ActiveIncident\src\Product\Service\App_Start\WebApiConfig.cs:line 22中的Microsoft.OneIM.ActiveIncident.Service.WebApiCnfig.Register(HttpConfiguration config)位于c:\OneIM\EngSys\OneIM\ActiveIncident\src\Product\ServiceHost\ApiStartup.cs:line 27 中的Microsoft.OneIM.ActiveIncident.ServiceHost.ApiStartup.Configuration(IAppBuilder appBuilder)

我的型号如下

    public class Incident
    {
            public IncidentImpact Impact { get; set; }
    }
[ComplexType]
public class IncidentImpact
{
    public bool IsCustomerImpacting { get; set; }
    public string SupportTicketId { get; set; }
    public ICollection<ImpactedService> ImpactedServices { get; set; }
}

public class ImpactedService
{
     public long Id { get; set; }

      public long IncidentId { get; set; }
    public Incident Incident { get; set; }
    public long ServiceId { get; set; }
}

尽管OData协议V4支持复杂类型,包含实体作为导航属性,但OData-Lib和WebAPI OData现在都没有实现此功能。

您必须通过[key]属性或在模型生成器中将密钥属性设置为

builder.EntitySet<Type>("Types").EntityType.HasKey(t => t.KeyProperty);

希望能有所帮助。

最新更新