Вставьте вложенный объект из Web Api с помощью Entity Framework

Я пытаюсь использовать класс контроллера впервые с EF, и весь код был сгенерирован автоматически для веб-API.

Итак, у меня есть объект, который имеет некоторые свойства, и у него есть другой объект. Я хочу иметь возможность вставлять вложенный объект, но он не добавляется... только основной объект. Я отладил Post Api, и я вижу значения, но они не вставляются в его таблицу.

вот мои классы

public class Inventory
{
    public int InventoryID { get; set; }
    public string Operator { get; set; }
    public string Warehouse { get; set; }
    public decimal Total { get; set; }
    public DateTime Date { get; set; }

    public Localization Localization { get; set; }
}

public class Localization
{
    public int LocalizationID { get; set; }
    public string Reference { get; set; }
    public int TicketsToStore { get; set; }
    public int TicketsStored { get; set; }
    public bool IsValid { get; set; }
    public decimal Precision { get; set; }
}

в основном Инвентаризация - это отношение «один ко многим» с локализацией.

это сгенерированная функция post api

// POST: api/Inventories
[ResponseType(typeof(Inventory))]
public IHttpActionResult PostInventory(Inventory inventory)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    db.Inventories.Add(inventory);
    db.SaveChanges();

    return CreatedAtRoute("DefaultApi", new { id = inventory.InventoryID }, inventory);
}

и вот мой почтовый запрос

$("#btnAdd").click(function () {

        debugger

        var Inventory= {
            "Operator": $("#Operator").val(),
            "Warehouse": $("#Warehouse").val(),
            "Total": $("#Total").val(),
            "Date": $("#Date").val(),
        };

        var Localization = {
            "Reference": $("#Reference").val(),
            "TicketsToStore": $("#TicketsToStore").val(),
            "TicketsStored": $("#TicketsStored").val(),
            "IsValid": $("#IsValid").val(),
            "Precision": $("#Precision").val()
        }

        Inventory.Localization = Localization;

        $.ajax({
            type: "POST",
            url: 'api/inventaries',
            data: JSON.stringify(Inventory),
            contentType: "application/json;charset=utf-8",
            success: function (data, status, xhr) {
                alert("The result is : " + status + ": " + data);
            },
            error: function (xhr) {
                alert(xhr.responseText);
            }
        });
    });

Мой вопрос в том, что я делаю неправильно здесь?

Invent<a>ry.Localization = Локализация; работает ли это с <o>?

user3104267 16.03.2019 00:29

да, извините, я исправил это, нет опечаток, я просто перевел все на английский

Jackal 16.03.2019 00:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
585
1

Ответы 1

На самом деле я обнаружил проблему, я загрузил инструмент EF для Visual Studio, который создает модели диаграмм EF для Code First, если щелкнуть правой кнопкой мыши класс контекста, и я увидел, что отношение было обратным. 1 В локализации много инвентаря, а должно было быть наоборот. Следовательно, почему он не вставлялся в таблицу.

Если кто-то совершит ту же ошибку, это хороший учебник по Code First Approach.

http://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx#configure-one-to-many-using-fluent-api

Другие вопросы по теме