Не удается получить идентификатор вставленного объекта для другой вставки с помощью LINQ.

У меня проблема с LINQ to SQL. Я вставляю новый DetailsComposantsMan в свою базу данных (он работает), и я хочу вставить новый DetailsRep, указывающий на мой вставленный идентификатор DetailsComposantsMan.

Эти функции работают правильно

  • Функция InsertOnSubmit работает
  • Функция SumbitChanges работает

Вот код вставки для DetailsComposantsMan

if (detailsComposantMan.Id == 0)
{
    DetailsComposantsMan inserted = new DetailsComposantsMan();
    inserted.Article_Id = detailsComposantMan.Article_Id;
    inserted.BlocFonctionnel_Id = detailsComposantMan.BlocFonctionnel_Id;
    inserted.CategorieComposant_Id = detailsComposantMan.CategorieComposant_Id;
    inserted.DetailComposant = detailsComposantMan.DetailComposant;
    inserted.Fabricant = detailsComposantMan.Fabricant;
    inserted.IndicationSAV_Id = detailsComposantMan.IndicationSAV_Id;
    inserted.IsMAJ = detailsComposantMan.IsMAJ;
    inserted.IsActive = true;
    inserted.NumPieceStuder = detailsComposantMan.NumPieceStuder;
    inserted.PositionSchema = detailsComposantMan.PositionSchema;
    db.DetailsComposantsMans.InsertOnSubmit(inserted);
}
// Autrement on tente de trouver le details a update
else
{
    #region Update DetailsComposantsMan
    DetailsComposantsMan updated = lst.Single(x => x.Id == detailsComposantMan.Id);
    updated.Id = detailsComposantMan.Id;
    updated.Article_Id = detailsComposantMan.Article_Id;
    updated.BlocFonctionnel_Id = detailsComposantMan.BlocFonctionnel_Id;
    updated.CategorieComposant_Id = detailsComposantMan.CategorieComposant_Id;
    updated.DetailComposant = detailsComposantMan.DetailComposant;
    updated.Fabricant = detailsComposantMan.Fabricant;
    updated.IndicationSAV_Id = detailsComposantMan.IndicationSAV_Id;
    updated.IsMAJ = detailsComposantMan.IsMAJ;
    updated.IsActive = detailsComposantMan.IsActive;
    updated.NumPieceStuder = detailsComposantMan.NumPieceStuder;
    updated.PositionSchema = detailsComposantMan.PositionSchema;
    #endregion
}
try
{
    // Submit tout les changements
    db.SubmitChanges();
}
catch (Exception E)
{
    // Si erreur on la balance au try catch supérieur
    throw E;
}

После вставки я создаю новый объект DetailsRep и поле DetailsComposantsMan_Id с 0.

dbConn.updateOrinsertDetailsComposantMan(newDetailsComposantsMan);

// Si c'est une mise à jour, créer une nouvelle DetailsRep
DetailsRep newDetailsRep = new DetailsRep();
newDetailsRep.Quantity = 1;
newDetailsRep.Rep_Id = sav.Id;                             
// PROBLEM HERE (ID = 0) !!!                        
newDetailsRep.DetailComposantMan_Id = newDetailsComposantsMan.Id;

Это внешний ключ, поэтому, если поле стоит 0, оно не работает. Может кто-нибудь мне помочь?

0 ответов

Другие вопросы по тегам