Вопрос

Я пытаюсь сопоставить попко как отношение многих ко многим. Я не хочу недвижимости по поведению, которое содержит поведения. Я уверен, что сопоставление многих для многих должно быть в обоих местах, однако я не хочу соответствующий недвижимость на моем классе поведения.

Я слышал, что вы можете использовать оператор доступа NO-OP, но я не уверен, как это сделать в свободном отношении Nibernate.

Пожалуйста, порекомендуйте:

public class BehavioralEvent : AggregateRoot    
    {       
        protected internal IList<Behavior> Behaviors { get; private set; }

        public BehavioralEvent()
        {
            Behaviors = new List<Behavior>();
        }
    }

Класс поведения (без справки обратно к поведению)

public class Behavior : AggregateRoot
{
        protected internal virtual string Name { get; private set; }
        protected internal virtual string Definition { get; private set; }           

        public Behavior(string name, Guid id) 
        {
            this.Id = id;
            this.Name = name;               
        }

        protected Behavior(){}          
    }

Поведения поведения:

public class BehavioralEventClassMap : ClassMap<BehavioralEvent>
    {
        public BehavioralEventClassMap()
        {
            Id(x => x.Id, "BehavioralEventId").GeneratedBy.Assigned();

            HasManyToMany(x => x.Behaviors)
                .Cascade.All()
                .Table("BehaviorData")
                .ParentKeyColumn("BehavioralEventId")
                .ChildKeyColumn("BehaviorId");
        }
    }

Поведения поведения:

public class BehaviorClassMap : ClassMap<Behavior>
{
    public BehaviorClassMap()
    {
        Table("Behaviors");
        Id(x => x.Id, "BehaviorId").GeneratedBy.Assigned();
        Map(x => x.Name).Not.Nullable();
        Map(x => x.Definition); 
    }
}
Это было полезно?

Решение

Вам не нужно отображать его с обеих сторон.

У меня есть разные отображения, как это:

HasManyToMany(x => x.SomeCollection).Table("MappingTable").ParentKeyColumn("ParentKey").ChildKeyColumn("ChildKey").Cascade.AllDeleteOrphan();

Работает как шарм! Карта ее как коллекция или набор (см. http://www.codinginstink.com/2010/03/nibernate-tip-use-set-for-many-to-many.html.).

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top