Я обнаружил странную проблему. Откройте простую страницу в Firefox, код прост, как показано ниже:
<html>
<body>
<textarea></textarea>
</body>
</html>
В Firefox я ввожу некоторые символы в текстовое поле. Затем я нажимаю кнопку обновления браузера. Удивительно, но после обновления страницы то, что я напечатал, все еще находится в текстовом поле. Однако, если я просто сфокусируюсь на строке URL и нажму клавишу ENTER, текстовое поле станет чистым после обновления.
Я воспроизвел это в Firefox 3.6.12 в Linux и 3.6.3 в MacOS. И у меня установлено только расширение Firebug, так что это НЕ должно быть связано с расширением Firefox.
Это известная проблема?
Но FK помещаются как навигационные в сущность « Location », так как мне переместить эти навигационные свойства в производные сущности? Я не могу копировать + вставлять элементы навигации, и я не могу «создать новое свойство навигации», потому что это не позволяет мне определять начальную / конечную роль.
Как мы это делаем?
Это также неясно с TPH, можем ли мы сделать это сначала моделью, или мы ДОЛЖНЫ начать с БД, исправить модель, а затем повторно сгенерировать БД. Мне еще предстоит найти в Интернете хороший пример того, как определять навигацию для детей с TPH.
ПРИМЕЧАНИЕ: Я не хочу использовать сначала код . В моем текущем решении есть TPT с EDMX и чистые POCO, я надеюсь не повлиять на модель / репозитории предметной области (если возможно), а просто обновите модель / базу данных EF.
РЕДАКТИРОВАТЬ
По-прежнему нет решения - однако я пытаюсь сделать сначала модель и выполняю Добавить -> Новая ассоциация, что на самом деле позволяет мне добавить навигацию к производным объектам. Но когда я пытаюсь «Сгенерировать базу данных из модели», он все равно пытается создать таблицы для «Location_Street», «Location_Country» и т. Д. Это почти похоже на то, что TPH не может быть сначала сделана модель.
EDIT
Вот моя текущая модель :
Текущая ошибка проверки:
Ошибка 1 Ошибка 3002: Проблема с сопоставлением фрагменты, начинающиеся на строке 359: Возможное нарушение таблица Ключи местоположений (Locations.LocationId): столбцы (Locations.LocationId) сопоставляются с EntitySet NeighbourhoodZipCode's свойства (NeighbourhoodZipCode.Neighbourhood.LocationId) с концептуальной стороны, но они не формируют ключевые свойства EntitySet (NeighbourhoodZipCode.Neighbourhood.LocationId, NeighbourhoodZipCode.ZipCode.LocationId).
Просто подумал, что продолжу редактировать этот вопрос с поправками относительно того, где я сейчас нахожусь. Я начинаю задаваться вопросом, возможен ли TPH с самореференцией FK.
EDIT
Итак, я выяснил вышеупомянутую ошибку, потому что мне не хватало таблицы соединений для Neighborhood-ZipCode многие ко многим .
Добавление таблицы соединения (и сопоставление с ней навигационных элементов) решило указанную выше ошибку.
Но теперь я получаю эту ошибку:
Ошибка 3032: Проблема с сопоставлением фрагменты, начинающиеся со строк 373, 382: члены условия "Locations.StateLocationId" имеют повторяющиеся значения условий.
Если я посмотрю на CSDL, вот сопоставление ассоциаций для "CountyState" (в штате много округов, в округе 1 штат):
<AssociationSetMapping Name="CountyState" TypeName="Locations.CountyState" StoreEntitySet="Locations">
<EndProperty Name="State">
<ScalarProperty Name="LocationId" ColumnName="StateLocationId" />
</EndProperty>
<EndProperty Name="County">
<ScalarProperty Name="LocationId" ColumnName="LocationId" />
</EndProperty>
<Condition ColumnName="StateLocationId" IsNull="false" />
</AssociationSetMapping>
Это то, что Condition ColumnName = StateLocationId
, который жалуется, потому что ассоциация ZipCodeState
также вызывает это условие.
Но я не понимаю. Дискриминаторы для всех объектов уникальны (я проверил их трижды), и я бы подумал, что это допустимый сценарий:
Разве это не действует в TPH?