¿Por qué no puedo insertar un registro con clave externa en una sola solicitud de servidor?

¿Por qué no puedo insertar un registro con clave externa en una sola solicitud de servidor?

Aparentemente usando UNSIGNED BIGINT causa este problema. Cuando cambié a SIGNED BIGINT todo funcionó como se suponía.


Traté de hacer esto "de la manera correcta":

Y luego escribí esta pequeña aplicación de prueba para escanear un directorio, almacenar el directorio y todos sus archivos en dos tablas:

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;
      }
   }
}

Como puede ver, solo tengo una llamada a .SaveChanges() al final, esto funciona de maravilla, todo es como se esperaba.

Algo en tu enfoque debe estar arruinando el sistema EF...