2012-05-02 5 views
1

Я использую сущность framework 4.1 (VS 2010, SQL Server 2012) для вставки данных в базу данных. Сначала я создаю экземпляр объекта, заполнить свойства со значениями и называют AddObject(), как это:Получение значения столбца идентификатора с использованием структуры сущностей 4.1

VideoData videodata = new VideoData(); 
videodata.StartCaptureTime = startCaptureTime; 
videodata.EndCaptureTime = endCaptureTime; 
videodata.CameraID = CameraID; 

using (var context = new PercEntities()) 
{    
    if (context.VideoDatas.Where(c => c.VideoID == videoID).Count() == 0) 
    { 
     var videoData = new VideoData 
     { 
      StartCaptureTime = startCaptureTime, 
      EndCaptureTime = endCaptureTime, 
      CameraID = CameraID, 
     }; 
    context.VideoDatas.AddObject(videoData); 
    context.SaveChanges(); 
    } 
} 

Дело в том, что таблица в базе данных имеет столбец идентификаторов:

VideoID int IDENTITY(1,1) 

и мне нужно получить значение, введенное функцией идентификации, чтобы заполнить дополнительные объекты, имеющие VideoID в качестве внешнего ключа. например:

FrameData frameData = new FrameData(); 
frameData.VideoID = videodata.VideoID; 
frameData.Path = path; 

Единственное, что я мог думать только о том, чтобы запросить для максимальной идентичности сразу после AddObject (видеоданными), но боюсь условий гонки.

Я новичок в платформе Entity Framework, поэтому буду рад за любое руководство по этому вопросу.

ответ

0

Если у вас есть другие объекты, требующие VideoID как FK, вам просто нужно правильно настроить свои навигационные свойства между VideoData, и эти другие типы и EF будут обрабатывать его для вас.

Звонок по номеру AddObject не вставляет ваши данные в базу данных, и из-за этого вы не можете получить идентификационное значение после этого звонка. Только вызов на SaveChanges приведет все ваши изменения к базе данных, и во время этого вызова EF будет обрабатывать ссылочную целостность внутренне (но только если ваша модель правильно настроена с отношениями).

После звонка SaveChanges ваш VideoID должен быть заполнен автоматически, если у вас все правильно настроено.

+0

Спасибо за быстрый ответ. Это была проблема конфигурации. – Omri374

 Смежные вопросы

  • Нет связанных вопросов^_^