Быстрый nHibernate - Карта список строк

У меня есть модель, такая как это (упростил)

public class Post
{
    public string ID { get; set; }    
    public string Title { get; set; }
    public string Body { get; set; }
    public string AuthorName { get; set; }

    public List<string> Attachments { get; set; }
}

В моей базе данных у меня есть таблица Post и таблица PostAttachment

Таблица Attachment сообщения имеет 2 столбца:

PostID AttachmentKey

(Основы этого - то, что вложение загружается на Amazon S3, таким образом, AttachmentKey является s3 ключом),

То, что я хочу сделать, отобразить AttachmentKey на Список возвращенного / вставленный объект Сообщения...

Как я пошел бы о выполнении этого?

9
задан Alex 10 August 2010 в 11:18
поделиться

2 ответа

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

Оттуда вы можете начать с сопоставления HasMany и внешнего ключа, указывающего на вашу таблицу сообщений, т.е.

HasMany (o => o.PostAttachments).ForeignKeyConstraintName ("FK_Attachment_Post");

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

Вам также может понадобиться .Inverse () для сопоставления, в зависимости от того, как вы хотите сохранять вложения публикации.

править: после просмотра сообщения Диего, я думаю, что приведенное выше может работать, если PostAttachments представляет собой список строк. Я использовал метод, который он опубликовал ранее, и я почти уверен, что HasMany по умолчанию сопоставляется с сумкой nhibernate. Вам, вероятно, потребуется указать имена столбцов в вашем сопоставлении, чтобы использовать существующую таблицу.

2
ответ дан 4 December 2019 в 08:31
поделиться

Если я не неправильно понял вопрос, это просто следующее:

<bag name="Attachments" table="Attachment">
  <key column="PostId" />
  <element column="AttachmentKey" />
</bag>

Кстати, Вложения должны быть IList , а не List .

6
ответ дан 4 December 2019 в 08:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: