如何使用Linq to SQL在插入事务上返回记录ID

时间:2012-02-08 19:59:59

标签: c# linq linq-to-sql

我有以下LINQ to SQL插入代码:

public static int InsertFileToQueue(FileInfo file)
{
    int? recordID = null; 

    IpsDBDataContext db = new IpsDBDataContext();

    IpsJobFileQueue record = new IpsJobFileQueue();
    record.FileName = file.Name;
    record.FilePath = file.FullName;
    record.PickupDate = file.CreationTime;

    record.StartTime = null;
    record.EndTime = null;
    record.ProcessCode = null;

    db.SubmitChanges();

    return recordID;
}

db.SubmitChanges()之后的某个地方我知道我需要添加一些代码来检索我刚插入的记录上的id。我不能依赖的是文件名(因为许多文件将被命名为相同),当然也不是任何时候。

那么我要查询什么来获取ID?

1 个答案:

答案 0 :(得分:4)

首先,您应该调用传递IpsJobFileQueue实例的Table<TEntity>.InsertOnSubmit(TEntity)方法来保持。然后,在DataContext.SubmitChanges()方法完成后,您可以从IpsJobFileQueue对象上的相应属性中检索指定的主键值。

var db = new IpsDBDataContext();
var record = new IpsJobFileQueue();
db.IpsJobFileQueues.InsertOnSubmit(record);
db.SubmitChanges();

return record.Id; // Contains the assigned primary key value

在此示例中,IpsJobFileQueue.Id是相应数据库表的mapped to the primary key column属性。