1

我有一组答案 ( IList<Answer>) 和两个表(答案和答案历史)。我想做一些类似的事情:

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>();

保存(答案,“答案”);

基本上,将答案保存到历史表中,从答案表中删除答案,然后更新答案并将它们插入到答案表中。

有什么简单的方法可以让休眠保存同一个类和多个相同的表?

4

1 回答 1

1

据我所知,类和表之间的映射是静态的,不能更改。您可以创建一个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);

另一种选择是在答案中添加一个布尔值,无论它是否在历史记录中;那么您只需要设置该布尔值并保存(到同一个表)。

于 2009-02-19T14:31:47.703 回答