Как установить отношение 1: n между моделями данных сущностей в сочетании с ASP.NET Core OData WebAPI - PullRequest
0 голосов
/ 12 июня 2019

Я получаю информацию от ASP.NET Core Web API с OData.

Но если я пытаюсь получить информацию из моего API (localhost: port / odata / groups), он возвращает только ID и GroupName.Выходные поля отсутствуют.

Мои модели структурированы следующим образом:

public class OutputGroup
{
    [Key]
    public int ID { get; set; }
    public string GroupName { get; set; }
    public List<OutputField> OutputField { get; set; }
}

public class OutputField
{
    public int ID { get; set; }
    public string FieldName { get; set; }
    public string value { get; set; }
    // Tryed to set a ForeignKey for the 1:n releationship
    public int GroupForeignKey { get; set; }
    [ForeignKey("GroupForeignKey")] 
    public OutputGroup OutputGroup { get; set; }
}

С помощью этого метода создается EDM, в котором я пытался определить ссылку между EntitySets:

    private static IEdmModel GetEdmModel()
    {
        // create Builder Object                                                 
        ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
        // OutputGroup-EntitySet
        builder.EntitySet<OutputGroup>("Groups")
               .HasManyBinding(g => g.OutputField, "Fields");
        // OutputField-EntitySet
        builder.EntitySet<OutputField>("Fields");

        return builder.GetEdmModel();
    }

с помощью этого кода я определяю отношение 1: n между объектом Outputgroup и объектом OutputField:

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<OutputGroup>()
                    .HasMany(g => g.OutputField)
                    .WithOne(f => f.OutputGroup)
                    .HasForeignKey("GroupForeignKey");
    }

Мой класс контроллера возвращает группы следующим образом (существует второй контроллер для сборки OutputFields, симуляционной этому):

    [ODataRoute("Groups")]
    [EnableQuery]
    public IActionResult Get()
    {
        return Ok(_db.Groups); // The values are all correct in this variable
    }

Я знаю, что должен установить отношения между сущностями, но я не знаю, почему это не работает.

Метаданные Одаты возвращают это xml .

Мой проект основан на этом учебном пособии .

...