Я пытаюсь преобразовать свое сопоставление xhibernate xml в сопоставление кода.
В моей базе данных MSSQL есть таблица CharacterMedia.
Внутри CharacterMedia 2 столбца:
characterId = PK, FK, bigint, not null
mediaId = PK, FK, bigint, not null
могут быть повторяющиеся идентификаторы символов, но не повторяющиеся идентификаторы mediaIds ... поэтому один и тот же символ может иметь много записей mediaId.
Вот мое рабочее XML-отображение:
<bag name="Media" table="characterMedia" cascade="all">
<key column="characterId" />
<many-to-many column="mediaId" class="Game.Storage.GameMedia" />
</bag>
Вот мое сопоставление кода:
//begin character media
Bag(x => x.Media, cm => {
cm.Schema("game");
cm.Table("characterMedia");
cm.Key(km => km.Column("characterId"));
cm.Cascade(Cascade.All);
}, rm => {
rm.ManyToMany(m => m.Column("mediaId"));
});
//end character media
Сопоставление кода генерирует исключения nullException при каждом запуске игры.Но XML-сопоставления нет.
Я что-то упустил в своем сопоставлении кода?
на всякий случай, вот мой сценарий создания таблицы characterMedia:
CREATE TABLE [game].[characterMedia](
[characterId] [bigint] NOT NULL,
[mediaId] [bigint] NOT NULL,
CONSTRAINT [pk_characterMedia] PRIMARY KEY CLUSTERED
(
[characterId] ASC,
[mediaId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [game].[characterMedia] WITH CHECK ADD CONSTRAINT [fk_characterMedia_characters] FOREIGN KEY([characterId])
REFERENCES [game].[characters] ([characterId])
ON DELETE CASCADE
GO
ALTER TABLE [game].[characterMedia] CHECK CONSTRAINT [fk_characterMedia_characters]
GO
ALTER TABLE [game].[characterMedia] WITH CHECK ADD CONSTRAINT [fk_characterMedia_userMedia] FOREIGN KEY([mediaId])
REFERENCES [media].[userMedia] ([id])
ON DELETE CASCADE
GO
ALTER TABLE [game].[characterMedia] CHECK CONSTRAINT [fk_characterMedia_userMedia]
GO
Спасибо!