Как выполнить CREATE для таблиц с внешним ключом в ASP.NET C# ⇐ C#
-
Anonymous
Как выполнить CREATE для таблиц с внешним ключом в ASP.NET C#
{
"FacilityID":"18c9aebb-0874-4fc2-900e-48f6b192797f",
"FacilityRoomNumber":102,
"FacilityPurpose":"DSFDSF",
"LabTypeID":"bde03bf9-2fec-4d4c-bc00-e8fc605703a5",
"LabType":{
"LabTypeID":"bde03bf9-2fec-4d4c-bc00-e8fc605703a5",
"LabTypeName":"CT Scan",
"Facilities":[]
},
"LabResults":null
}
LabTypeПоле является обязательным.
Я создаю объект, у которого LabTypeID является внешним ключом. Я могу читать из таблицы, что, вероятно, означает, что все FK и таблицы установлены правильно, но я не могу добавить их в базу данных. Хотя поле LabType имеет значения, ошибка говорит о том, что оно является обязательным.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Create([Bind("FacilityRoomNumber,FacilityPurpose,LabTypeID")] Facility facility)
{
facility.FacilityID = Guid.NewGuid();
var labtype = await _context.LabTypes.FindAsync(facility.LabTypeID);
if (labtype != null)
{
facility.LabType = labtype;
_context.Entry(facility).State = EntityState.Modified; // ensure ef tracks the changes
}
else
{
ModelState.AddModelError(string.Empty, "the specified lab type does not exist.");
return View(facility);
}
if (ModelState.IsValid)
{
Console.WriteLine("valid context");
_context.Facilities.Add(facility);
await _context.SaveChangesAsync();
return RedirectToAction("index", "facilities");
}
else
{
string json = JsonConvert.SerializeObject(facility, new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});
Console.WriteLine(json);
}
return View(facility);
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... et-c-sharp
{
"FacilityID":"18c9aebb-0874-4fc2-900e-48f6b192797f",
"FacilityRoomNumber":102,
"FacilityPurpose":"DSFDSF",
"LabTypeID":"bde03bf9-2fec-4d4c-bc00-e8fc605703a5",
"LabType":{
"LabTypeID":"bde03bf9-2fec-4d4c-bc00-e8fc605703a5",
"LabTypeName":"CT Scan",
"Facilities":[]
},
"LabResults":null
}
LabTypeПоле является обязательным.
Я создаю объект, у которого LabTypeID является внешним ключом. Я могу читать из таблицы, что, вероятно, означает, что все FK и таблицы установлены правильно, но я не могу добавить их в базу данных. Хотя поле LabType имеет значения, ошибка говорит о том, что оно является обязательным.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Create([Bind("FacilityRoomNumber,FacilityPurpose,LabTypeID")] Facility facility)
{
facility.FacilityID = Guid.NewGuid();
var labtype = await _context.LabTypes.FindAsync(facility.LabTypeID);
if (labtype != null)
{
facility.LabType = labtype;
_context.Entry(facility).State = EntityState.Modified; // ensure ef tracks the changes
}
else
{
ModelState.AddModelError(string.Empty, "the specified lab type does not exist.");
return View(facility);
}
if (ModelState.IsValid)
{
Console.WriteLine("valid context");
_context.Facilities.Add(facility);
await _context.SaveChangesAsync();
return RedirectToAction("index", "facilities");
}
else
{
string json = JsonConvert.SerializeObject(facility, new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});
Console.WriteLine(json);
}
return View(facility);
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... et-c-sharp