Я получаю информацию от 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 .
Мой проект основан на этом учебном пособии .