NHibernate - Должен ли я иметь класс для взаимодействия с таблицей? - PullRequest
0 голосов
/ 03 декабря 2009

У меня есть класс Entry. Этот класс как коллекция строк называется TopicsOfInterest. В моей базе данных TopicsOfInterest представлен отдельной таблицей, поскольку существует связь «один ко многим» между записями и интересующими их темами. Я хотел бы использовать nhibernate для заполнения этой коллекции, но поскольку таблица хранит очень мало (только идентификатор записи и строка), я надеялся, что смогу каким-то образом обойти создание класса для его представления и все, что с этим связано ( сопоставления, конфигурация и т. д.)

Возможно ли это, и если да, то как? Я использую Fluent Nhibernate, поэтому что-то конкретное для этого было бы еще более полезным.

Ответы [ 2 ]

2 голосов
/ 03 декабря 2009
public class Entry
{
    private readonly IList<string> topicsOfInterest;

    public Entry()
    {
      topicsOfInterest = new List<string>();
    }

    public virtual int Id { get; set; }

    public virtual IEnumerable<string> TopicsOfInterest
    {
       get { return topicsOfInterest; }
    }
}

public class EntryMapping : ClassMap<Entry>
{
  public EntryMapping()
  {  
     Id(entry => entry.Id);
     HasMany(entry => entry.TopicsOfInterest)
       .Table("TableName")
       .AsList()
       .Element("ColumnName")
       .Cascade.All()
       .Access.CamelCaseField();
  }
}
0 голосов
/ 03 декабря 2009

У меня было похожее требование для сопоставления коллекции поплавков.

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

Оказывается, что NHibernate НЕ будет автоматически отображать коллекции базовых типов - вам нужно переопределить.

См. Мой ответ на мой собственный вопрос Как вы можете автоматизировать List или float [] с помощью Fluent NHibernate? .

Я предоставил много примеров кода - вы должны иметь возможность заменить «string» на «float» и заставить его работать. Обратите внимание на ошибки в пояснительном тексте.

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