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)]