2013-04-01 2 views
1

У меня есть система, в которой мне нужно иметь возможность добавлять поля комментариев к моделям клиентов и местоположений, но я не могу коснуться схемы существующих таблиц. Однако я могу добавить таблицу комментариев. Я упростил этот пример. Мы хотели бы добавить этот комментарий для большего количества моделей, которые двигаются вперед, и все они используют Guid как Id.NHibernate - Добавить комментарий Свойство к объектам (Store with Join)

Эта существующая система представляет собой стороннюю систему со своим собственным уровнем доступа к данным.

Мы только начинаем входить в NHibernate. Из того, что я могу сказать, это похоже на карту объединения.

Пример:

public class Customer 
{ 
    public Guid Id { get; private set; } 
    public string FirstName { get; private set; } 
    public string LastName { get; private set; } 
    public string Comment { get; set; } 
}  

public class Location 
{ 
    public Guid Id { get; private set; } 
    public string Name { get; private set; } 
    public string Address { get; private set; } 
    public string Comment { get; set; } 
} 

Примечание: мы уверены, что мы хотим, чтобы комментарий, как отношения в 1-к-1, а не 1-ко-многим.

Как настроить отдельную таблицу только для захвата идентификатора и комментария? Я ищу подходящую терминологию для использования. Я ищу примеры с XML (и, если возможно, Fluent config). Я хотел бы оставить комментарии для всех объектов в одной таблице. Благодарю.

ответ

0

Если вы можете добавить комментарий таблицу (и соответствующие ключевые столбцы в существующих таблицах), чем беглое отображение может выглядеть

public class CustomerMap : ClassMap<Customer>{ 
    public CustomerMap(){ 
     //...other columns mappings 

     References(c=>c.Comment).Column("CommentId"); 
    } 
} 

И повторить для других лиц, а также. Вы также можете установить желаемый режим выборки (join) и другие действия. Я написал References там (так много-к-одному), но если вам нужно индивидуальное сопоставление, то это не большая разница.

+0

Как выглядит сопоставление «один-к-одному»? – BuddyJoe

+1

изменить 'Ссылки' на' HasOne' – tchrikch

0

Если вы не можете изменить схему базы данных, ваши варианты очень ограничены. MAYBE, вы можете сделать это, используя отображение. Посмотрите здесь:

http://ayende.com/blog/3961/nhibernate-mapping-join

Попробуйте использовать то же имя столбца в отображении для всех объектов.

+0

Знаете ли вы, есть ли способ сообщить системе через конфигурацию, что основной объект не является изменчивым, но «соединение» является изменяемым? – BuddyJoe

+0

@brun: Что ты имеешь в виду? Если элемент na не изменен, то нет никакого способа, чтобы какая-либо его часть могла мутировать. – cidico

+0

Есть часть клиента, которую я не хочу мутировать свойство Comment. Могу ли я просто применять это с частными «наборами» по тем свойствам, которые я показываю на своем C# выше? – BuddyJoe