Entity Framework Split Table Delete

Я использую EF 4 STE для моделирования объекта Attachment. Вложение содержит имя, описание, дату и, самое главное, данные ( байт [] ). Чтобы оптимизировать загрузку, я не хочу извлекать свойство Data до тех пор, пока это не станет абсолютно необходимым, т.е. когда пользователь щелкнет Загрузить из клиента.

Пытаясь следовать этому подходу, я использовал технику разделения таблиц, описанную здесь . Я разделил свою таблицу Attachment на Attachment (Имя, Описание, Дата) и AttachmentData (Данные). В моей модели EF это отношение один к одному. Все работает отлично, пока я не попытаюсь удалить Attachment без AttachmentData (т.е. attachment.AttachmentData == null ). Я получаю следующее исключение:

Обнаружены недопустимые данные. Требуемая связь отсутствует. Изучите StateEntries, чтобы определить источник нарушения ограничения.

Я видел похожий пост , но не могу заставить его работать с STE и методом расширения ApplyChanges .

Сейчас мой код доступа к данным прост: я вызываю контекст ApplyChanges () , а затем SaveChanges () .

Я пробовал простую SQL-функцию удаления и сопоставил ее с обоими объектами, и это действительно сработало; однако сломалась вставка. Кажется, я не могу сопоставить функцию вставки всех свойств с обоими объектами.

Есть идеи по поводу других вариантов, которые я могу попробовать? Может ли связь между Attachment и AttachmentData быть необязательной? Когда я делаю это от 1 до 0+, я получаю сообщение об ошибке сопоставления, что Их первичные ключи могут конфликтовать .

Открыт для любых предложений.

Спасибо!

13
задан Community 23 May 2017 в 11:52
поделиться