2015-02-23 5 views
1

Я получаю следующую ошибку при добавлении отношений внутри сложного типа. Как я могу исправить эту проблему. Я выпил и прочитал, что это проблема с OData V3, но не в OData V4.Проблема WebAPI AND Odata V4: ComplexType, содержащий объекты

Комплексный тип «Microsoft.OneIM.ActiveIncident.Contracts.IncidentImpact» относится к типу объекта «Microsoft.OneIM.ActiveIncident.Contracts.ImpactedService» через свойство «ImpactedServices».

на System.Web.OData.Builder.ODataConventionModelBuilder.MapComplexType (ComplexTypeConfiguration ComplexType) на System.Web.OData.Builder.ODataConventionModelBuilder.MapType (StructuralTypeConfiguration EdmType) в System.Web.OData.Builder.ODataConventionModelBuilder.AddComplexType (Тип) на System.Web.OData.Builder.ODataConventionModelBuilder.ReconfigureEntityTypesAsComplexType (EntityTypeConfiguration [] misconfiguredEntityTypes) на System.Web.OData.Builder.ODataConventionModelBuilder.RediscoverComplexTypes() в System.Web.OData.Builder.ODataConventionModelBuilder. GetEdmModel() в Microsoft.OneIM.ActiveIncident.Service.ModelBuilder.BuildIncidentModels() в c: \ OneIM \ EngSys \ One IM \ ActiveIncident \ src \ Product \ Service \ Models \ ModelBuilder.cs: строка 42 в Microsoft.OneIM.ActiveIncident.Service.WebApiConfig.Register (Конфигурация HttpConfiguration) в каталоге c: \ OneIM \ EngSys \ OneIM \ ActiveIncident \ src \ Product \ Service \ App_Start \ WebApiConfig.cs: строка 22 в Microsoft.OneIM.ActiveIncident.ServiceHost.ApiStartup.Configuration (IAppBuilder appBuilder) в каталоге c: \ OneIM \ EngSys \ OneIM \ ActiveIncident \ src \ Product \ ServiceHost \ ApiStartup.cs: линия 27

Моя модель выглядит, как показано ниже

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; } 
} 

ответ

1

Хотя OData протокол V4 поддерживает сложный тип, содержит объект как свойство навигации, как OData Lib, так и OAP данных WebAPI не реализуют эту функцию сейчас.

0

Вы должны установить ключевое свойство с помощью [ключ] атрибута или в модели строитель как

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

Надеюсь, это поможет.

+1

Это не сработало и выдало ту же ошибку – sammym

Смежные вопросы