我正在尝试将一组人插入数据库表。我可以毫无问题地从数据库中进行选择,但是当我尝试进入时,我得到了
Cannot add an entity with a key that is already in use
我知道这意味着什么,但为什么会这样。我增加了表id。这是我的代码。
public static List<Person> GetPeople(DataContext db)
{
List<Person> people = new List<Person>();
Table<Person> People = db.GetTable<Person>();
for (int i = 0; i < 5; i++)
{
Person pers = new Person();
pers.PersFirstName = "Wesley " + i;
//pers.PersId is the primary key that I want to auto-increment and not have to set it here
people.Add(pers);
}
People.InsertAllOnSubmit(people);
People.Context.SubmitChanges();
IQueryable<Person> query =
from person in People
select person;
return people;
}
问题发生在
行People.InsertAllOnSubmit(people);
我是否有一些特殊方法可以使用Linq设置自动增量?
答案 0 :(得分:2)
在dbml设计器中,单击作为主键的列,并确保以下属性具有以下值:
Auto Generated Value: True
Auto-Sync: OnInsert
Primary Key: True
由于您没有使用dbml设计器,因此您可以使用field属性的参数来完成它(对于您可能已经存在的其他参数)。
[Column(AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]