У меня есть вопрос по поводу Entity framework.
Я хочу реализовать хитрую схему: Есть сущность "Блог", "Фото" и "Коментарий". В коментарии есть форенкей под названием "ОбъектИД", в котором может хранится ссылка на блог или на фото.
Вообще идея такая, чтобы иметь одну общую сущность "Коментарий" для сколь угодно многих сущностей.
Зараза ентити фреймворк ругается, при добавления коментария в блоге, сообщая, что нужно еще и в фото добавить такой же ключ.
Здравствуйте, Аноним, Вы писали:
А>Добрый день,
А>У меня есть вопрос по поводу Entity framework. А>Я хочу реализовать хитрую схему: Есть сущность "Блог", "Фото" и "Коментарий". В коментарии есть форенкей под названием "ОбъектИД", в котором может хранится ссылка на блог или на фото.
А>Вообще идея такая, чтобы иметь одну общую сущность "Коментарий" для сколь угодно многих сущностей.
А>Зараза ентити фреймворк ругается, при добавления коментария в блоге, сообщая, что нужно еще и в фото добавить такой же ключ.
А>Что делать и как быть?
сделать два форенкея (default null) и добавить констрейнс в базу на заполнение хоть одного из них?
-----------------------------------------
тут может быть ваша реклама
Re[2]: Entity framework
От:
Аноним
Дата:
25.02.11 09:23
Оценка:
Здравствуйте, nauro, Вы писали:
N>сделать два форенкея (default null) и добавить констрейнс в базу на заполнение хоть одного из них?
Идея сделать все в общем виде не привязываясь конкретным коментируемым сущностям. Например если я потом добавлю "Товар" или другую сущность — не надо будет на нее заводить отдельный ФК.
Здравствуйте, Аноним, Вы писали:
А>Есть сущность "Блог", "Фото" и "Коментарий". В коментарии есть форенкей под названием "ОбъектИД", А>в котором может хранится ссылка на блог или на фото. А>Вообще идея такая, чтобы иметь одну общую сущность "Коментарий" для сколь угодно многих сущностей.
По каким признакам СУБД и EF будут понимать, что вот этот конкретный "ОбъектИД" относится к сущности "Фото", а следующий — к сущности "Блог"?
А>Что делать и как быть?
1. Уберите FK-ассоциацию из "Коментарий".
2. Создайте свои FK,ассоциации, ссылающиеся на "Коментарий" в каждой из сущностей "Блог" и "Фото".
Re[2]: Entity framework
От:
Аноним
Дата:
25.02.11 10:25
Оценка:
Здравствуйте, HowardLovekraft, Вы писали:
HL>Здравствуйте, Аноним, Вы писали:
А>>Есть сущность "Блог", "Фото" и "Коментарий". В коментарии есть форенкей под названием "ОбъектИД", А>>в котором может хранится ссылка на блог или на фото. А>>Вообще идея такая, чтобы иметь одну общую сущность "Коментарий" для сколь угодно многих сущностей.
HL>По каким признакам СУБД и EF будут понимать, что вот этот конкретный "ОбъектИД" относится к сущности "Фото", а следующий — к сущности "Блог"?
Теоретически они и не должны. Коментарии должны прицеплятся к обьекту, но им не обязательно строго указывать объект на который они ссылаются. На практике смысла нет по коментарию указывать запись в блоге.
HL>1. Уберите FK-ассоциацию из "Коментарий". HL>2. Создайте свои FK,ассоциации, ссылающиеся на "Коментарий" в каждой из сущностей "Блог" и "Фото".
Идея сделать все в общем виде не привязываясь конкретным коментируемым сущностям. Например если я потом добавлю "Товар" или другую сущность — не надо будет на нее заводить отдельный ФК.
Здравствуйте, Аноним, Вы писали:
А>Что делать и как быть?
Судя по всему, без EF у Вас всё работает как надо? Можно ли, в таком случае, взглянуть как выглядят таблицы? Я просто не могу вкурить как это может выглядеть на уровне реляционной БД.
А>Например если я потом добавлю "Товар" или другую сущность —
и ее же унаследуй от "EntityWithComment" о которой я написал в предыдущем посте
Re[2]: Entity framework
От:
Аноним
Дата:
25.02.11 14:42
Оценка:
Здравствуйте, skodnik, Вы писали:
S>Здравствуйте, Аноним, Вы писали: S>Создай ентити "EntityWithComment" и от нее унаследуй "Блог" и "Фото". А у "Коментария" будет отношение с "EntityWithComment".
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, skodnik, Вы писали:
S>>Здравствуйте, Аноним, Вы писали: S>>Создай ентити "EntityWithComment" и от нее унаследуй "Блог" и "Фото". А у "Коментария" будет отношение с "EntityWithComment".
А>А как тогда будет выглядеть маппинг на БД?
В студии нажми Generate Database from model — увидишь. Рассказывать куда дольше.
Сделай модель в дизайнере EF а затем сгенери базу.
Наоборот — не осилишь.
Re[4]: Entity framework
От:
Аноним
Дата:
25.02.11 17:01
Оценка:
Здравствуйте, skodnik, Вы писали:
S>В студии нажми Generate Database from model — увидишь. Рассказывать куда дольше. S>Сделай модель в дизайнере EF а затем сгенери базу. S>Наоборот — не осилишь.
Ок, посмотрел как сгенерилась база. Идея понравилась. Так и реализую, через промежуточную таблицу. Только базу немного поправлю, для более удобочитаемых имен. Пойду пробовать