Почему я не могу вставить запись с внешним ключом в единственном запросе к серверу?

Я - tryring, чтобы сделать простую вставку с внешним ключом, но кажется, что я должен использовать db.SaveChanges() для каждой рекордной вставки. Как мне может удаться использовать только один db.SaveChanges() в конце этой программы?

public static void Test()
{
    using (var entities = new DBEntities())
    {
        var sale =
            new SalesFeed
            {
                SaleName = "Stuff...",
            };
        entities.AddToSalesFeedSet(sale);

        var phone =
            new CustomerPhone
            {
                CreationDate = DateTime.UtcNow,
                sales_feeds = sale
            };
        entities.AddToCustomerPhoneSet(phone);

        entities.SaveChanges();
    }
}

После выполнения вышеупомянутого кода я получаю это исключение:

Система. Данные. UpdateException: ошибка произошла при обновлении записей. Посмотрите InnerException для деталей. Заданное значение не является экземпляром допустимого постоянного Названия параметра типа: значение.

Править: Измененный пример кода и добавленный возвратил исключение.

7
задан MPelletier 4 July 2013 в 14:10
поделиться

2 ответа

По всей видимости, использование UNSIGNED BIGINT вызывает эту проблему. Когда я переключился на SIGNED BIGINT, все заработало, как и должно было.

16
ответ дан 6 December 2019 в 10:48
поделиться

Я пытался сделать это "правильно way ":

alt text

И затем я написал это небольшое тестовое приложение для сканирования каталога, сохранения каталога и всех его файлов в двух таблицах:

static void Main(string[] args)
{
   string directoryName = args[0];

   if(!Directory.Exists(directoryName))
   {
      Console.WriteLine("ERROR: Directory '{0}' does not exist!", directoryName);
      return;
   }

   using (testEntities entities = new testEntities())
   {
      StoredDir dir = new StoredDir{ DirName = directoryName };
      entities.AddToStoredDirSet(dir);

      foreach (string filename in Directory.GetFiles(directoryName))
      {
         StoredFile stFile = new StoredFile { FileName = Path.GetFileName(filename), Directory = dir };
         entities.AddToStoredFileSet(stFile);
      }

      try
      {
         entities.SaveChanges();
      }
      catch(Exception exc)
      {
         string message = exc.GetType().FullName + ": " + exc.Message;
      }
   }
}

Как видите, у меня есть только один вызов .SaveChanges () в самом конце - работает как шарм, все как положено.

Что-то в вашем подходе должно быть облажалось с системой EF .....

2
ответ дан 6 December 2019 в 10:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: