【发布时间】:2013-12-13 07:45:47
【问题描述】:
所以我们的 edmx 中有 13 个表,它们是从现有的 sql 数据库创建的。当我们尝试通过我们构建的 UI 向表中添加新条目时,除了 4 个之外,其他所有条目都失败了。
进行一些挖掘后,我们发现 ModelState 实际上返回为 false,这是因为我们收到一条错误消息,指出“需要 [PrimaryKeyId] 字段”。我不明白当我们添加新数据时某些表工作正常时会导致此问题的原因。
在 edmx 中,我们查看了表的主键属性,一切似乎都正确
我觉得在搭建表格时可能会出现问题。我不能确定,我仍在学习 EF 的复杂性。
谁能指出我正确的方向?这可能是 SQL 方面的问题(个人认为不是因为我们已经通过 sql 脚本在这些表中添加了数据)?会不会是EF?我应该再次炸掉 edmx 表并重新添加它们吗?我感觉很失落。感谢您的帮助!
编辑 1
所以因为我们使用了实体框架脚手架,所以我们有了基本的方法。这是手动设置一些属性的 create 方法。数据库中的主键也是自动递增的。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Entity entity)
{
if (ModelState.IsValid)
{
_user = GetUser();
entity.CreateDate = DateTime.Now;
entity.LastUpdateDate = DateTime.Now;
entity.LastUpdatedById = _user.Id;
entity.CreatorId = _user.Id;
db.Entities.Add(entity);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(entity);
}
【问题讨论】:
-
你检查过你的主键是否是自增列吗?
-
发布一个示例代码,说明您在其中为其中一个给您带来问题的表创建条目
-
显示失败的 SQL 表设计,是否有主键?
-
在使用 EDMX 时出现这样的问题很常见。只要您在 SQL 中的表在设计上是正确的,只需尝试从您的 edmx 模型中删除有问题的表,然后重新添加它。
-
所有表都有主键,从edmx中删除并不能解决问题。虽然通常我确实使用@Derek seuggestion 并且 98% 的时间它都有效。遗憾的是,它没有完成这项工作。我会继续做一些研究。其他人有这个问题吗?
标签: c# mysql sql sql-server entity-framework