Linq получает последний вставленный идентификатор

Я пытаюсь выполнить 2 запроса на вставку linq. Второму требуется последнее вставленное значение идентификатора из первого запроса.

Как я могу получить last_id_inserted (last_fich)?

db.CWC_FICHEIROS.Add(new CWC_FICHEIROS
{
    idfiletype = newextID,
    filename = fileName,
    fileurl = fileName,
    fileordem = "AA001",
    filedate = System.DateTime.Now,
    fileact = true
 });
last_fich = db.CWC_FICHEIROS.Max(item => item.id_file);

db.CWC_FILESSUBCONTEUDOS.Add(new CWC_FILESSUBCONTEUDOS
{
     idfile = last_fich,
     idsubconte = cwc_subconteudos.idcont,
     fscact = true
});

db.SaveChanges();

В общем, last_fich дает мне идентификатор первой строки CWC_FICHEIROS.


person Ricardo Sousa    schedule 25.03.2015    source источник
comment
возможный дубликат Могу ли я вернуть поле 'id' после вставка LINQ?   -  person walther    schedule 25.03.2015
comment
Используйте свойства навигации!   -  person Gert Arnold    schedule 25.03.2015


Ответы (1)


Вместо того, чтобы добавлять объект напрямую, сначала создайте свой объект, а затем вставьте его, например:

var yourOjbect = new CWC_FICHEIROS
{
    idfiletype = newextID,
    filename = fileName,
    fileurl = fileName,
    fileordem = "AA001",
    filedate = System.DateTime.Now,
    fileact = true
};
db.CWC_FICHEIROS.Add(yourObject);
db.SaveChanges();

Позже вы можете получить доступ к его идентификатору как:

Console.WriteLine(yourObject.ID);

Не полагайтесь на db.CWC_FICHEIROS.Max, в базе данных может быть несколько вставок одновременно, и вы можете получить неправильный идентификатор.

person Habib    schedule 25.03.2015