Использование NHibernate / FluentHibernates сохранить с таблицей в качестве параметра - PullRequest
1 голос
/ 19 февраля 2009

У меня есть коллекция Answerer (IList<Answer>) и две таблицы (Answer и AnswerHist). Я хочу сделать что-то вроде:

Get the current answers from db.

save(Answers, "AnswerHist");
delete(Answers, "Answer");

Answers = questions
                            .Select(x => new Answer(response)
                            {
                                QuestionID = x.QuestionID,
                                Value = x.Answer.Value,
                                Bool = x.Answer.Bool,
                                Date = x.Answer.Date,
                                Number = x.Answer.Number,
                                Text = x.Answer.Text
                            })
                            .ToList<Answer>();

сохранить (Ответы, «Ответить»);

Обычно сохраняйте ответы в таблице истории, удаляйте ответы из таблицы ответов, затем обновляйте ответы и вставляйте их в таблицу ответов.

Есть ли простой способ заставить Hibernate сохранить тот же класс против нескольких идентичных таблиц?

1 Ответ

1 голос
/ 19 февраля 2009

Насколько я знаю, отображение между классом и таблицей является статическим и не может быть изменено. Вы можете создать класс AnswerHistory и отобразить его в таблицу AnswerHist:

public class AnswerHistory : Answer {
    public AnswerHistory (Answer answer) {
        this.QuestionID = answer.QuestionID;
        this.Value = answer.Value;
        // ...
    }
}

Тогда вы бы использовали это так:

save(Answers.Select(answer => new AnswerHistory(answer)));
delete(Answers);

Answers = new stuff;
save(Answers);

Другой вариант - добавить логическое значение в ответ, независимо от того, находится оно в истории или нет; тогда вам нужно будет только установить это логическое значение и сохранить (в той же таблице).

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