LINQ to SQL - 插入新记录

7

我有一个带自增ID字段的数据库表。通过实体数据模型,我的代码可以访问这个表。我正试图向这个表中写入新记录。我有一个方法需要负责创建这些记录。该方法接受记录的属性值。它需要创建一条记录,并在另一个表中写入引用记录。目前,这是我正在尝试的:

public int CreateRecord(string name, string description, List<int> ids)
{
  using (DatabaseContext database = new DatabaseContext())
  {
    Record record = new Record();
    record.Name = name;
    record.Description = description;

    database.Records.InsertOnSubmit(record);
    database.SubmitChanges();

    List<RecordTrack> tracks = new List<RecordTrack>();
    foreach (int id in ids)
    {
      RecordTrack track = new RecordTrack();
      track.RecordID = record.ID;
      track.ID = id;
      tracks.Add(track);
    } 
    database.Tracks.InsertAllOnSubmit(tracks);
    database.SubmitChanges();
  }
}

我似乎无法以这种方式保存记录。当我传入要插入的记录时,我可以做到这一点。但由于其他因素,我需要一种纯粹从头开始创建记录的方法。我做错了什么?谢谢!

我在L2S方面的熟练程度不如应该(因此是评论,而不是答案),但是在插入记录后,您不需要从Db Context中检索记录吗?您的引用还没有更新它的ID,对吧? - AllenG
你的跟踪表也是自增的吗?如果是这样,你不能像这里一样设置ID。 - Pleun
1个回答

2

你的数据库上下文中应该有一个AddToRecord()函数。 使用该函数添加你的record变量,然后从你的数据库上下文调用SaveChanges()


1
我没有AddToRecord函数。这是与我没有引用的命名空间相关联的扩展方法吗?我谷歌了一下,但没有在任何地方看到它被提及。 - Villager
应该是由您的上下文自动生成的函数。我猜想,由于您使用的是SubmitChanges而不是SaveChanges,所以您正在使用我不熟悉的东西。 - dtryan
1
尝试使用 db.TableName.Add(record); 然后使用 db.SaveChanges(); - Bahaa Hany
我也找不到这些方法!该怎么办? - ejmtv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接