Как получить идентификаторы только из сопоставления FluentNhibernate HasManyToMany - PullRequest
0 голосов
/ 26 октября 2011

Скажем, у меня есть две сущности.

public class Category{
    public virtual int Id{get;set;}
    public virtual IList<Post> Posts{get;set;}
}

public class Post{
    public virtual int Id{get;set;}
    public virtual string Title{get;set;}
}

В БД есть таблица "многие ко многим"

CategoryPostRel

  • CategoryId
  • PostId

Карта категорий выглядит следующим образом:

public CategoryMap()
    {   
        HasManyToMany(x => x.Posts)
            .Table("CategoryPostRel")
            .ParentKeyColumn("CategoryId")
            .ChildKeyColumn("PostId");
    }

Хорошо, но скажите, что я хочу только идентификаторы из сообщений.Поэтому я изменяю свою сущность Category так, чтобы она выглядела следующим образом.

    public class Category{
    public virtual int Id{get;set;}
    public virtual IList<int> PostIds{get;set;}
}

Итак, как теперь получить идентификаторы с моим отображением, поскольку HasManyToMany отображает сущности, а не столбцы, верно?

Обратите внимание, что я вообще не могу изменить базу данных, и таблица «многие ко многим» не имеет уникального идентификатора.

    public CategoryMap()
    {   
        HasManyToMany(x => x.PostIds)
            .Table("CategoryPostRel")
            .ParentKeyColumn("CategoryId")
            .ChildKeyColumn("PostId").HowDoIgetTheIds...?
    }

1 Ответ

1 голос
/ 26 октября 2011

Вы можете создать сущность, которая моделирует эти отношения CategoryPost и сделать что-то вроде этого:

public CategoryMap()
{   
    HasMany(x => x.CategoryPostIds)
        .KeyColumn("CategoryId")

}

public CategoryPostMap
{
    CompositeId()
        .KeyProperty(x => x.PostId)
        .KeyProperty(x => x.CategoryId)
}

Это, очевидно, не идеальное решение, но оно может сработать.

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