所以,我有一个相当简单的模型,有一个相当简单的控制器。我的视图成功将TabularData
记录传递给Controller。它经历了添加到上下文的动作,然后出现在SaveChanges
中。它没有错误或任何东西。但是,当我检查数据库时,表中不存在记录。我不能为我的生活找出原因。如果我再次尝试插入相同的记录,它会给我一个密钥违规错误。我确定我的模型已连接到正确的数据库,因为如果我将一条记录插入SQL,它会在我查询VS的服务器资源管理器中的表时出现。这似乎是一个简单的操作,但我正在试图弄清楚我做错了什么......
这是我的模特:
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!";
}
}
}
记录的另一个注意事项:如果我尝试通过Web应用程序再次插入记录,则会引发密钥违规。但是,如果我手动在SQL Server中插入记录,它不会抱怨。而且,我确信模型指向了正确的数据库。
答案 0 :(得分:1)
您使用User
作为主键。这将为表添加一个唯一约束。根据您目前的设计,每个用户只能有一条记录。
答案 1 :(得分:0)
我刚刚删除了我的项目并重新开始。这次,它在模型中创建了DbContext和Data类。不知道为什么之前没有这样做,但是......唉,这是我的解决方案。微软无法跟上我的精彩,所以我只是努力了并重新开始。