【发布时间】:2011-02-20 13:25:53
【问题描述】:
我有一个 MVC Web 应用程序,模型中有一个表,我想添加到其中。我将主键与其他数据字段一起设置,但每次尝试添加到表中时,都会出现以下错误:
“当 IDENTITY_INSERT 设置为 OFF 时,无法为表 'TABLE_NAME' 中的标识列插入显式值。”
我不确定为什么会出现这个问题,我将主键设置为标识,并且它还在 Visual Studio 表设计器中设置为自动递增。有什么方法可以在 Visual Studio 的表设计器中调整 IDENTITY_INSERT 参数?或者是否有其他问题可能导致此问题。
更新:@Brian - 据我所知,我没有明确设置值,这是添加到表中的代码。
//Add viewer
public void addViewer(ModelStateDictionary modelState, Users user)
{
var userToAdd = new UserRoles();
userToAdd.Users = user;
if (String.IsNullOrEmpty(userToAdd.Users.Username))
{
modelState.AddModelError("noName", "Please enter a username for the new Viewer");
}
//See if Committee Member already exists
try
{
userToAdd = _db.UserRoles.First(ur => ur.Users.Username == userToAdd.Users.Username);
modelState.AddModelError("userExists", "A Viewer with that username already exists in the system");
return;
}
catch (Exception e)
{
if (modelState.IsValid)
{
//Assign Committee Member role
userToAdd.Role = "Viewer";
userToAdd.Users = user;
//Add new Committee Member to User Roles and associated username to Users
_db.AddToUserRoles(userToAdd);
_db.SaveChanges();
}
}
}
【问题讨论】:
-
在您的 Linq-to-SQL 设计器中检查相关表的设置/属性 - 您需要确保某些特定设置 - 请参阅我的答案了解详细信息。
-
刚刚编辑了
*.edmx,将我的主键对应的值从<Property Name="Id" Type="int" Nullable="false" />更改为<Property Name="Id" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />。它只是添加属性及其值:StoreGeneratedPattern="Identity"。
标签: asp.net sql asp.net-mvc tsql