|
|
|
Fluent NHibernate mapping - TPC - создать Id поле как Identity (MSSQL 2008)
|
|||
|---|---|---|---|
|
#18+
Добрый день, в общем прошу помощи в данном вопросе - уверен, что просто не досмотрел где-то нужную информацию. Собственно задача - в приложении есть иерархическая структура классов = базовый класс, абстрактный, содержит все одинаковые свойства для системы, остальные классы = наследуются от базового, и содержат дополнительные свойства. В Базе данных хочу иметь талицы для не абстрактных сущностей (TPC), уникальные ключи хотелось бы иметь как Identity (int type), чтобы в момент инсерта он сам генерировался базой данных; в интерете нашел очень познавательную статью, на нее и ориентировался (последний сценарий): http://www.codeproject.com/Articles/232034/Inheritance-mapping-strategies-in-Fluent-Nhibernat в итоге мой код выглядит где-то так: Базовый класс: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Дочерний класс (один) Код: c# 1. 2. 3. 4. 5. 6. 7. Маппинги: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. и для Child: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. вот такая структура собирается, но в момент вставки записи типа ChildEntity = получаем ситуацию, когда в момент вызова операции Код: c# 1. выкидывается исключение след типа = "Cannot insert explicit value for identity column in table 'ChildEntity' when IDENTITY_INSERT is set to OFF". В базе таблицу я собрал сам - для Id указал Identity, autoIncrement; для классов я ID не указывал - так как мне нужно их гененрировать в момент вставки. Для Assign() = свойства маппинга написано - что оно позволяет определить значение ключа перед непосредственной вставкой в базу, что мне не нужно (понятно откуда выскакивает оошибка). Если я пытаюсь указать маппинг ID для базовой сущности вместо Assigned() как Native() или Identity() = предполагаю, что это мой случай - то в момент сборки конфигурации Код: c# 1. получаю ошибку "Cannot use identity column key generation with <union-subclass> mapping for: Namespace.Model.Classes.ChildEntity". в Entity Framework такая структура маппилась на ура, здесь пока не понимаю, как победить. Буду признателен за совет или пинок в нужном направлении. Заранее спасибо за советы и идеи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2013, 13:49 |
|
||
|
Fluent NHibernate mapping - TPC - создать Id поле как Identity (MSSQL 2008)
|
|||
|---|---|---|---|
|
#18+
в продолжение темы маппинга - дополнительный случай, когда базовую абстрактную сущность экстендит еще одна абстрактная сущность - от которой уже наследуются несколько классов. Например: public abstract class SpecificBaseEntity : BaseEntity { ... } pubic class SpecificEntityType1 : SpecificBaseEntity { ... } public class SpecificEntityType2 : SpecificBaseEntity { ... } Стратегия та же - TPC (таблицы нужны только для не абстрактных классов) Возможно кто-то решал подобную задачу для NHibernate и FluentMapping. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2013, 14:06 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=38151213&tid=1350101]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 371ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...