我正在尝试将一个房间添加到我的数据库中,但不断收到上述错误并且无法找出原因。
我想插入:
ID:12345 名称:房间
数据库中没有ID为12345的条目,实际上没有条目,我无法插入任何内容。
模型
public class Room
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ID { get; set; }
public string name { get; set; }
public virtual ICollection<RoomItem> RoomItems { get; set; }
public virtual ICollection<StaffRoom> StaffRooms { get; set; }
public virtual ICollection<RoomAudit> RoomAudit { get; set; }
}
控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID, name")] Room room)
{
db.Rooms.Add(room);
db.SaveChanges();
return RedirectToAction("Index");
}
连接字符串
<connectionStrings>
<add name="UniversityContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=RoomAudit;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
</connectionStrings>
我一直在努力解决这个问题几个小时,所以任何帮助都会得到大力赞赏。
修改
完整错误:
EntityFramework.dll中发生了'System.Data.Entity.Infrastructure.DbUpdateException'类型的异常,但未在用户代码中处理
其他信息:更新条目时发生错误。有关详细信息,请参阅内部异常。
内部异常1:
{“更新条目时发生错误。有关详细信息,请参阅内部异常。”}
内部异常2:
{“当IDENTITY_INSERT设置为OFF时,无法在表'Room'中为标识列插入显式值。”}
答案 0 :(得分:1)
问题如下:
无法在表'Room'中为identity列插入显式值 IDENTITY_INSERT设置为OFF
ID
是一个标识列,您尝试使用insert来设置此值。一个快速的解决方法是更改列并删除标识。但是,我不确定这是否是适合您案例的最合适的设计解决方案。通常,主键被定义为自动递增(标识列)整数值。但是,这不是您应该始终遵循它的规则。这取决于我之前所说的设计选择。