Вот часть Entity Framework модель
В основном у меня есть элементов , которые могут иметь несколько предварительный просмотр , и каждый предварительный просмотр имеет миниатюру (сохраняется в поле большого двоичного объекта Данные в PreviewThumbnail ).
Я использую самоконтроль POCO прокси и шаблон репозитория.Ограничения внешнего ключа применяются как в базе данных, так и в модели Entity Framework.Теперь, поскольку объекты PreviewThumbnail содержат байтовые массивы, я не хочу, чтобы Entity Framework отслеживал их, я просто хочу иметь возможность загружать массив bite [?] И делать что-то с ним, а также распоряжаться им вв то время как.И это соответствующий код:
public ObjectSet<PreviewThumbnail> PreviewThumbnails {
get {
if (mPreviewsThumbnailsSet == null) {
mPreviewsThumbnailsSet = CreateObjectSet<PreviewThumbnail>("PreviewThumbnails");
mPreviewsThumbnailsSet.MergeOption = MergeOption.NoTracking;
}
return mPreviewsThumbnailsSet;
}
}
И вот как я получаю байты для данного предварительного просмотра:
public byte[] LoadImagePreviewThumbnail(Preview preview) {
var thumb = this.ObjectContext.PreviewThumbnails.First(t => t.Preview.ID == preview.ID);
return thumb.Data;
}
Теперь, когда сцена настроена, япытаясь заставить работать каскад удаления - если Item удален, все его Previews также должны быть удалены вместе с их PreviewThumbnails .Звучит хорошо, но при удалении Item выдается следующее исключение:
Отношение из 'FK_PreviewThumbnails_0' AssociationSet находится в состоянии 'Удалено'.Учитывая ограничения множественности, соответствующий «PreviewThumbnails» должен также находиться в состоянии «Удалено».
Если я удаляю действие Cascade OnDelete из 'FK_PreviewThumbnails_0', выдается точно такое же исключение.
Более удивительно (по крайней мере для меня), когда я изменяю кратность в конце PreviewThumbnail (то есть предварительный просмотр не может иметь миниатюру, что, конечно, недопустимо), выдается точно такое же исключение.
Последнее, что я пытался, это полностью удалить связь между Preview и PreviewThumbnail в модели Framework (в конце концов, я могу обойтись без него), но это не такдопустимый - внешний ключ в базе данных должен быть поддержан ассоциацией в концептуальной модели.
Есть ли хороший выход из этой ситуации?