2009-08-26 4 views
4

После охоты вокруг сети, и, думая, что я придумаю решение, я, кажется, ударил еще одну кирпичную стену.Задержка загрузки дорогостоящих полей в Entity Framework v.1

У меня есть таблица в моей базе данных: Фотографии; содержащие столбцы для PhotoID, Caption, Ordering и четыре набора двоичных данных: оригинал, большой, средний и маленький (да, он был основан на старом стартовом наборе ASP.NET с различными исправлениями и т. д.).

Я в процессе перехода от L2S к Entity Framework для некоторых из преимуществ, которые, как мне кажется, получаю, - поэтому мне больше не нужно проходить через свойство PhotosTags, чтобы получить список тегов, прикрепленных к фотографии например, но я ищу способ замедлить загрузку двоичных данных - большую часть времени мне нужно только заголовок, тег и идентификатор, и я передаю их в другую область, чтобы получить двоичные данные, когда пользователь фактически просматривает изображение.

Я принял взглянуть на следующие должности:

  1. How to split a data table?
  2. “Table Splitting”: Mapping multiple entity types to the same table.
  3. Глава 7: Entity Framework Learning Guide (7,1 Задержка загрузки дорогих полей)

И я в конечном итоге с Картинкой по объектам выглядит так:

Entity Diagram http://www.doodle.co.uk//UserFiles/Image/EF-LazyLoad.png

И, согласно вышеуказанным ссылкам, я изменил файл EDMX включить следующую реляционное ограничение:

<ReferentialConstraint> 
    <Principal Role="Photos"> 
    <PropertyRef Name="PhotoID" /> 
    </Principal> 
    <Dependent Role="PhotoDetails"> 
    <PropertyRef Name="PhotoID" /> 
    </Dependent> 
</ReferentialConstraint> 

Модель проверяющий, но не строить - из-за проблем с тегами картирование я думаю:

Ошибка 3019: Проблема при сопоставлении Фрагменты, начинающиеся с строк 871, 892: неправильное отображение столбцов составных клавиш. Ограничение внешнего ключа «FK_siteContent_TagsPhotos_siteContent_Photos» из таблицы siteContent_TagsPhotos (PhotoID) на стол сайтаContent_Photos (PhotoID): Столбцы (PhotoID) в таблице siteContent_TagsPhotos отображаются в свойствах (PhotoID) в siteContent_TagsPhotos и столбцах (PhotoID) в таблице siteContent_Photos отображаются в свойствах (PhotoID) в PhotoPhotoDetails. Порядок столбцов через отображения не сохраняется.

Отношения между фотографиями и тегами через таблицу ссылок, столбцы PhotoID, TagID.

Кому-нибудь удалось получить либо эти рекомендации, либо что-то подобное, для работы с платформой Entity Framework в .NET 3.5 SP1 с такой структурой данных? Или вы можете указать ограничения моего GoogleFU?

Я знаю, что это все будет намного проще в .NET 4, но этого нет, и, вероятно, через некоторое время он будет выпущен, и мой хост начнет предлагать его где-то установить.

Спасибо.

ответ

2

Я столкнулся с той же проблемой, и пока я не нашел решение для 3.5SP1, я действительно подтвердил, что эта ошибка уходит с EF 4.0.

На самом деле потенциальным обходным путем для вас было бы использование другого поля для первичного ключа в вашем объекте PhotoDetails.

+0

Под «другим полем для первичного ключа», вы имеете в виду просто дать ему другое имя, но использовать один и тот же базовый столбец базы данных или добавить новый столбец в базу данных и использовать его? –

+0

К сожалению, я сейчас попробовал оба варианта: переименование свойства скалярного объекта, что приводит к тому же сообщению об ошибке (порядок столбцов через сопоставления не сохраняется), добавление нового столбца в базу данных, в обоих объектах, и используя его в качестве ключа, вызвали ошибки в строках «Вы не использовали идентификатор объекта Entity Key в PhotoDetails». Я боюсь, что мне придется переработать живую базу данных - yay для LinqPad, вниз с курсорами;) –

+0

Я хотел добавить новый столбец в базу данных и использовать это. –