Создание идентификатора для базы данных Oracle через Entity Framework с использованием существующей хранимой процедуры - PullRequest
6 голосов
/ 23 ноября 2011

Как автоматически создать удостоверение для базы данных Oracle через Entity Framework?

У меня есть функция, которую я могу вызвать и сгенерировать столбец, который не находится в контексте. Как явно вызвать хранимую процедуру через Entity Framework? Я использую шаблон репозитория.

Генератор случайных чисел для вставки записи (где я получаю первичный ключ через UDF и передаю его сущности для вставки).

1 Ответ

0 голосов
/ 30 октября 2013

1) Создать последовательность в Oracle

 CREATE SEQUENCE dummy_test_seq
  MINVALUE 1
  MAXVALUE 999999999999999999999999999
  START WITH 1
  INCREMENT BY 1;

2) Создать свойство

   sealed public class CommonUtilities
    {
      #region Sequences
       public static int DummyTestSeq
        {
         get
          {              
            using (Entities ctx = new Entities()) 
             { 
               return Convert.ToInt32(ctx.Database.SqlQuery<decimal>("SELECT dummy_test_seq.NEXTVAL FROM DUAL").ToList().Single()); 
              }  
            }
         }
    #endregion
}

3) Получение последовательности

   public int InsertTable1()
    {
      using (Entities ctx = new Entities())
        {
            ctx.tabel1.Add(new tabel1()
            {
                SEQ = CommonUtilities.DummyTestSeq,
                Date= DateTime.Now
            });
            return ctx.SaveChanges();
        }
     }
...