Nhibernate ManyToMany с динамическим предложением where - PullRequest
0 голосов
/ 22 октября 2010

У меня есть некоторые проблемы при отображении сложных отношений многие ко многим в fluentnhibernate.У меня есть устаревшая БД, которая выглядит примерно так:

Foos: |Id |Фу |

FooBars: |FooId |BarId |

Бары: |Id |Бар |CultureId |

, который я пытаюсь сопоставить со следующей объектной моделью:

class Foo
{
   property virtual int Id { get; set; }
   property virtual string Foo { get; set; }
   property virtual IList<Bar> Bars { get; set; }
}

class Bar
{
   property virtual int Id { get; set; }
   property virtual int CultureId { get; set; }
}

с сопоставлениями:

public class FooMapping : ClassMap<Foo>
{
    public FooMapping()
    {
        Table("foos");
        Id(v => v.Id);
        Map(v => v.Foo);

        HasManyToMany(v => v.Bars)
            .Table("FooBars")
            .ParentKeyColumn("FooId")
            .ChildKeyColumn("BarId")
            .Cascade.All();
    }
}

public class BarMapping : ClassMap<Bar>
{
    public BarMapping()
    {
        Table("bars");
        Id(v => v.Id);
        Map(v => v.Bar);
        Map(v => v.CultureId);
    }
}

Проблема в том, что у меня несколько баров содин и тот же идентификатор для различных идентификаторов культур

например,

У меня была бы таблица, которая выглядит следующим образом:

Id | Bar | CultureId

1, Hello, 1

1, Bonjour, 2

1, Gutentag, 3

В настоящий момент свойство Bars для приведенной выше таблицы возвращает 3 элемента, но свойство Bar на нем будетверните «Hello» для всех трех элементов (предположительно, потому что они все имеют одинаковую идентичность).Поэтому мой вопрос: как я могу остановить это или . Может ли кто-нибудь предложить способ фильтрации строк, которые не имеют правильного идентификатора культуры (обратите внимание, это динамично и основано на текущей культуре)?

1 Ответ

0 голосов
/ 22 октября 2010

Вы не можете создавать динамические предложения where в ваших отображениях.Вам нужно будет запросить эту коллекцию вместо того, чтобы обращаться к ней через родительский элемент, используя критерии или HQL-запрос.Вы можете прочитать о фильтрах , но они все еще требуют запроса.

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