|
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&fpage=28&tid=1350101]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 31ms |
total: | 161ms |
0 / 0 |