C# 无法使用linq插入数据库

C# 无法使用linq插入数据库,c#,linq,C#,Linq,我正在尝试将一群人插入数据库表中。我可以毫无问题地从数据库中进行选择,但当我尝试输入时 Cannot add an entity with a key that is already in use 我知道这意味着什么,但为什么会发生。表id上有增量。这是我的代码 public static List<Person> GetPeople(DataContext db) { List<Person> people = new

我正在尝试将一群人插入数据库表中。我可以毫无问题地从数据库中进行选择,但当我尝试输入时

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;
        }

是否有一些特殊的方法必须使用Linq设置自动增量?

在dbml设计器中,单击主键列,并确保以下属性具有这些值:

Auto Generated Value: True
Auto-Sync: OnInsert
Primary Key: True
由于您没有使用dbml设计器,因此可以使用字段属性的列属性上的参数来完成它,这些参数将是您可能已经拥有的其他参数的补充

[Column(AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]

您必须设置数据库增加标识值。你把PersonId设置为主键了吗?是的,我已经设置好了。你在生成映射之前设置了主键了吗?如果没有,重新创建映射文件。好东西。我没有创建LINQtoSQL类,而是创建了自己的普通类。谢谢again@WesleySkeen-我已经用非DBML方式更新了这些属性。
[Column(AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]