Итак, у меня довольно простая модель с довольно простым контроллером. Мой взгляд успешно передает запись TabularData
на контроллер. Он проходит через движения, добавляя в контекст, затем появляется SaveChanges
. Это не ошибка или что-то еще. Тем не менее, когда я проверяю базу данных, запись не существует в таблице. Почему я не могу понять, почему. Если я попытаюсь снова вставить одну и ту же запись, это даст мне ошибку нарушения ключа. Я уверен, что моя модель связана с правой базой данных, потому что если я вставляю запись в SQL, она появляется, когда я запрашиваю таблицу в Server Explorer. Похоже, что такой простой операции, но я почесал голову, пытаясь понять, что я делаю неправильно ...Почему ActionResult не сохраняет запись в базе данных?
Вот моя модель:
namespace ReflectionProject.Models
{
public class TabularData
{
[Key]
public string User { get; set; }
public string Choice1 { get; set; }
public string Choice2 { get; set; }
public string Choice3 { get; set; }
public string Choice4 { get; set; }
public string Choice5 { get; set; }
}
public class SandboxDBContext : DbContext
{
public DbSet<TabularData> TabularDatas { get; set; }
}
}
А вот контроллер:
namespace ReflectionProject.Controllers
{
public class HomeController : Controller
{
private SandboxDBContext db = new SandboxDBContext();
[HttpGet]
public ActionResult Index()
{
return View();
}
[HttpPost]
public string Index(TabularData td)
{
db.TabularDatas.Add(td);
db.SaveChanges();
return "Thanks!";
}
}
}
Еще одно примечание к записи: если я попытаюсь вставить запись снова через веб-приложение, это вызовет нарушение ключа. Однако, если я вручную вставляю запись в SQL Server, она не жалуется. И снова, я уверен, что модель указана на правильную БД.
попробуйте добавить это в свое ключевое поле вместо того, чтобы просто [Key] '[Key, DatabaseGenerated (DatabaseGeneratedOption.None)]' – JamieD77