Разработка первой модели базы данных EF4 на основе правильно нормализованной таблицы - PullRequest
0 голосов
/ 07 июня 2011

Я создал концептуальную модель в своем проекте, используя таблицу в моей базе данных. Эта таблица связана с несколькими другими таблицами в базе данных, для которых я не буду создавать модели в проекте (таблицы большие и предназначены для другого приложения). Вместо этого мой администратор БД создал для меня несколько хранимых процедур, которые будут возвращать нужные мне данные из этих таблиц (используя сложные типы).

Концептуальная модель имеет три свойства, которые сопоставлены трем столбцам идентификаторов в таблице (FK связанных таблиц). В представлении моего проекта я связываю модель с видом сетки, поэтому значения полей с идентификаторами не очень полезны. С этой целью я добавил хранимые процедуры, упомянутые выше, и импортировал функции в сложные типы, а затем добавил свойства сложного типа в модель для каждого сложного типа. Это не сработало. Я продолжал получать сообщение об ошибке 3004. Проблема при отображении фрагментов ... где свойства сложного типа не сопоставлены со значением в модели.

Вот пример моей таблицы с одним из свойств сложного типа:

DisplayID
StoreID = StoreID, StoreName, StoreLocation **
OrderID
ProductID
DisplayLocation
DisplaySize

** StoreID, являющийся типом комплексного свойства, и StoreID, StoreName, StoreLocation составляют ComplexType; Я сопоставляю StoreID комплексного типа с StoreID таблицы в базе данных.

Мой сценарий выше не совсем соответствует примерам добавления сложных типов свойств. Примеры, которые я видел, приведены ниже:

DisplayID
Store = StoreName, StoreLocation
Заказать

продукта DisplayLocation
DisplaySize

Нужно ли менять структуру таблицы в базе данных, как в приведенном выше примере? Должен ли я создавать таблицы в базе данных для каждого из сложных типов вместо этого? Нужно знать, почему я могу убедить моего администратора баз данных использовать нужные мне столбцы вместо столбцов идентификаторов и создавать новые таблицы вместо хранимых процедур, которые он создал для меня.

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 07 июня 2011

Похоже, что вы пытаетесь отобразить свойство навигации "StoreID" в сложный тип, который не поддерживается (см. Документация сложного типа ). Сложные типы - это на самом деле группировка скалярных свойств от вашей сущности (или вы можете сопоставить их с вашей хранимой процедурой o / p, а затем они могут использоваться на автономной основе).

Я предлагаю вам использовать представления вместо хранимых процедур для получения данных (и использовать представления так же, как вы будете использовать таблицу в модели сущности - так что store будет представлением). Я полагаю, что было бы легко убедить вашего администратора баз данных, а не прямой доступ к таблицам.

...