Свободный NHibernate - отображение HasMany с условием - PullRequest
1 голос
/ 17 марта 2011

У меня есть отображение HasMany, которое нуждается в условии.У меня это частично работает, но должен быть лучший способ, чем я делаю.Условие, которое я использую, должно смотреть на свойство другой таблицы, к которой я присоединяюсь.Пока что у меня есть:

    HasMany<MetaData>(x => x.MetaData).Table("MetaData")
        .KeyColumn("DefinitionID")
        .KeyColumn("TableID")
        .Where("metadatade1_.SourceTable = 'Providers'")
        .Cascade.SaveUpdate();

В приведенном выше коде предложение where ссылается на «metadatade1_», потому что оно пытается полностью определить имя, и именно это имя генерирует NH.Я попытался использовать «MetaDataDefinitions.SourceTable» (MetaDataDef ... - это имя физической таблицы), а также просто «SourceTable», однако ни один из них не сработал.

Есть ли способ, чтобы он не пытался полностью определить имя в условии и просто передал "SourceTable = 'Providers'" ИЛИ есть ли способ заставить его ссылаться на сгенерированное имя без необходимостиподключить его вручную?

1 Ответ

3 голосов
/ 17 марта 2011

Короче, нет.Метод Where (и, соответственно, атрибут where= в HBM.XML) принимает только raw sql и, как таковой, подвержен проблемам, с которыми вы сталкиваетесь.опция заключается в том, чтобы не использовать коллекцию и вместо этого полагаться на запрос для получения экземпляров метаданных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...