我在Sql server Management中创建了一个用户表,其中包括主键 Id (uniqueidentifier
),Name等等。我使用Entity Framework(数据库优先)来访问我的数据库。一切看起来都不错,我可以列出数据(如果我有的话)。
我为“创建”页面创建了一个控制器/视图以添加新用户。第一次创建用户效果很好,但是因为我得到了以下顺序,所以我再也无法添加了用户:
违反PRIMARY KEY约束'PK_User'。无法插入重复 键入对象'dbo.User'。重复的键值是 (00000000-0000-0000-0000-000000000000)。声明一直如此 终止。
据我所知,uniqueidentifier每次都应生成一个新的独特的guid id。以下代码基本上就是我写的,只是添加了View。
public class UserController : Controller {
UserEntities db = new UserEntities();
public ActionResult Index() {
return View(db.Users.ToList());
}
[HttpGet]
public ActionResult Create() {
return View();
}
[HttpPost]
public ActionResult Create(User user) {
if (ModelState.IsValid) {
db.Users.Add(user);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(user);
}
}
这是自动生成的代码(数据库优先)
namespace User
{
using System;
using System.Collections.Generic;
public partial class User
{
public System.Guid Id { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
}
非常感谢任何帮助。
答案 0 :(得分:3)
您正在插入具有相同ID的其他用户。您可以执行以下操作之一:
您可以在模型中使用约束。这样做你的ModelState将无效并且不会存储数据。
您还可以从表单中检查您通过POST发送的值,以查看您是否从表单中发送了Id值。
另一种可能的解决方案是尝试自动递增主键值。 尝试将此添加到您的模型中:
git remote add pc ssh://Username@xxx.xxx.xxx.xxx/Projects
git push pc master
更新: 另一种可能的解决方案: