【发布时间】:2016-07-01 17:34:50
【问题描述】:
所以,我有一个相当简单的模型和一个相当简单的控制器。我的视图成功地将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!";
}
}
}
记录的另一个注意事项:如果我尝试通过网络应用再次插入记录,则会引发密钥冲突。然而,如果我在 SQL Server 中手动插入记录,它不会抱怨。再一次,我确定模型指向了正确的数据库。
【问题讨论】:
-
尝试将此添加到您的关键字段中,而不仅仅是 [Key]
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
标签: .net asp.net-mvc entity-framework