Column1: ID - Int - Primary key. - Identity specification yes, with a increment of 1
Column2: GroupName - nvarchar(100) - just a normal text field
然后。它窒息的代码在哪里:
using (SLEntities context = new SLEntities())
{
var namecheck = (from n in context.Groups
where n.GroupName == newname
select n).Count();
if (namecheck > 0)
{
// the name already exists.. return
lab_Error.Text = newname + " is already in the database. Please use another name";
return;
}
// namecheck is new.. add to db
Group g = new Group();
g.GroupName = newname;
context.Groups.Add(g);
context.SaveChanges();
}
它在savechanges()上死亡 我的问题是如何解决这个问题? (我看过IDENTITY_INSERT ON事件,但是当你只创建表时不是吗?)..或者,不是使用和自动增加ID,而是另一种方式?
答案 0 :(得分:4)
转到您的datamodel并验证标识列的“StoreGeneratedPattern”属性是否有效地设置为“Identity”。
答案 1 :(得分:0)
如果您在任何列上放置了IDENTITY_INSERT,则在数据库中创建表时,在从代码插入数据时,您不需要为该列提供值。
例如: -
CREATE TABLE dummy(id int identity(1,1), data varchar(100))
Insert into dummy values('First row')// it will work
Insert into dummy values(1,'First row')// it will give error
更好的方法是从代码中提取数据时提到列名
喜欢
Insert into dummy(data) values('First row')
或者你可以这样做(: - 这将允许你在身份列中插入值)
SET IDENTITY_INSERT dummy ON
INSERT INTO dummy(id, data) VALUES(3, 'garden shovel')
您应首先查看此文章: - http://msdn.microsoft.com/en-us/library/aa259221(v=sql.80).aspx