2015-07-01 9 views
1

По этой теме Fluent nHibernate with Automapping: How to get a parent or "containg" object from a childFluent NHibernate с Автоотображение: Как установить Inverse на «ребенка» стороне отношения

Я сделал класс со свойством «родительским»:

class Box 
{ 
    public virtual int Id { get; protected set;} 
    public virtual IList<Item> Items {get; protected set;} 
} 

class Item 
{ 
    public virtual int Id { get; protected set;} 
    public virtual Box Parent {get; set;} 
} 

Как было отмечено выше, в тему, я написал соглашение, которое устанавливает keycolumn свойства Parent так же, как keycolumn Items в Box. Разница в том, что я хотел бы установить Inverse на Parent, а не на коллекцию. Есть ли возможность сделать это?
Я попытался написать правильную реализацию IReferenceConvention, но я не вижу такой возможности.

ответ

0

нет прямого синтаксиса, чтобы взаимно однозначное отношение было обратным.

Есть несколько причин для этого:

  • более естественно
  • и работает лучше, поскольку ссылка в классе (Parent) непосредственно сопоставляется с внешним ключом в базе данных
  • так он все равно должен быть последовательным в памяти (это та часть, о которой вы должны заботиться о себе), это не имеет значения.

Вы можете обмануть его, сделав ни одно обратное и не подавите обновления свойства Parent. Я не знаю, возможно ли это с Fluent. Я бы так не сделал. Он просто просит неприятностей.

с отображением XML, это выглядит следующим образом:

<many-to-one name ="Parent" ... insert="false" update="false"> 

Пример здесь: http://www.codeproject.com/Articles/472019/Object-Relational-Mapping-ORM-u