Я написал очень длинный пост с кодом и всем, чтобы ответить Дэну. Это закончилось, я думаю, что я пропустил очевидное.
public class Serial
{
public string SerialNumber {get; set;}
public string ItemNumber {get; set;}
public string OrderNumber {get; set;}
}
...
Serial serial = sessionX.get(typeof(Serial), someID);
sessionY.save(serial);
NHibernate должен использовать mappingX для получения и mappingY для сохранения, так как сеансы не используются совместно, а сопоставление привязано к сеансу. Таким образом, я могу иметь 2 сопоставления, указывающих на один и тот же класс, потому что в любом конкретном сеансе существует только одно сопоставление с отношением классов.
По крайней мере, я так думаю (не могу проверить атм).
К сожалению, этот конкретный случай действительно скучный и бесполезный. В другой программе того же домена я наследую базовый класс для определенной части бизнес-логики. Я не хотел создавать файл сопоставления, так как это было просто для облегчения небольшого фрагмента кода. В любом случае, я не смог заставить его работать в NHibernate по тем же причинам, что и мой первый вопрос, и выполнил метод, описанный McWafflestix, чтобы обойти его (поскольку он был незначительным).
Тем не менее, я нашел это через Google:
http://jira.nhibernate.org/browse/NH-662
Это точно такая же ситуация, и, кажется, она адресована (возможно) адресуемой в NH 2.1+? Я еще не следил за этим.
(примечание: Дэн, в моем случае я получаю от нескольких БД, пишу только одному. Мне все еще интересно ваше предложение об интерфейсе, потому что я думаю, что это хорошая идея для других случаев. сопоставление с интерфейсом? Если я попытаюсь сохранить класс, реализующий интерфейс, у которого нет определения сопоставления, будет ли NHibernate использовать сопоставление интерфейса? Или мне придется объявлять пустые подкадры в сопоставлении для каждого класса, реализующего интерфейс отображение?)