Я пытаюсь использовать класс контроллера впервые с 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);
}
});
});
Мой вопрос в том, что я делаю неправильно здесь?
да, извините, я исправил это, нет опечаток, я просто перевел все на английский





На самом деле я обнаружил проблему, я загрузил инструмент EF для Visual Studio, который создает модели диаграмм EF для Code First, если щелкнуть правой кнопкой мыши класс контекста, и я увидел, что отношение было обратным. 1 В локализации много инвентаря, а должно было быть наоборот. Следовательно, почему он не вставлялся в таблицу.
Если кто-то совершит ту же ошибку, это хороший учебник по Code First Approach.
Invent<a>ry.Localization = Локализация; работает ли это с <o>?