File.Move дает сбой, если ему предшествует File.Delete

У нас есть метод MoveFile, который обычно работает, но продолжает давать сбой на сайте заказчика.

if (File.Exists(target))
{
    File.Delete(target);
}

File.Move(source, target);

Вызов File.Move неоднократно терпит неудачу с

 ] System.IO.IOException: невозможно создать файл, если этот файл уже существует.

 в System.IO .__ Error.WinIOError (Int32 errorCode, String может бытьFullPath)
 в System.IO .__ Error.WinIOError ()
 в System.IO.File.Move (String sourceFileName, String destFileName)
...  

У меня есть сущность «Интервью», которая имеет взаимно однозначное сопоставление с сущностью «FormSubmission», сущность «Интервью» является доминирующей стороной, так сказать, сопоставление:

<class name="Interview">
    <id name="Id" column="Id" type="Int64">
        <generator class="identity" />
    </id>

    // other props (snip)....

    <one-to-one name="Submission" class="FormSubmission"
        cascade="all-delete-orphan" />
</class>

<class name="FormSubmission">
    <id name="Id" column="Id" type="Int64">
        <generator class="foreign">
            <param name="property">Interview</param>
        </generator>
    </id>

    // other props (snip)....

    <one-to-one name="Interview" class="Interview"
        constrained="true" cascade="none" />
</class>

Обе сущности являются часть Агрегата с интервью, действующим в качестве агрегатного корня. Я пытаюсь сохранить / обновить / удалить отправку формы через объект Interview, поэтому я сопоставил конец ассоциации Interview как cascade = "all-delete-orphan". Например, я могу создать новую FormSubmission просто так:

myInterview.Submission = new FormSubmission(myInterview);
InterviewRepository.Save(myInterview);

... и это работает нормально, FormSubmission сохраняется. Однако я не могу удалить FormSubmission, который я пытаюсь сделать следующим образом:

myInterview.Submission = null;
InterviewRepository.Save(myInterview);

... но это не удаляет FormSubmission. Я пробовал присвоить null обеим сторонам ассоциации:

myInterview.Submission.Interview = null;
myInterview.Submission = null;
InterviewRepository.Save(myInterview);

I ' Мы даже пробовали установить cascade = "all-delete-orphan" на стороне FormSubmission, но ничего не работает. Что мне не хватает?

5
задан Sunday Ironfoot 18 April 2011 в 15:11
поделиться