0

我有这个表
id (int,pk,ai),
word(varchar 25)

假设我允许用户向我的数据库添加新的单词。
如果已经存在,我希望 Nhibernate 跳过添加新单词。
我怎样才能流畅地映射它?那可行吗?

谢谢

4

1 回答 1

1

映射:

Map(x => x.Word).Unique(); // just to make sure it is unique

代码:

void AddWords(ICollection<string> words)
{
    var existingWords = session.QueryOver<UniqueWord>()
        .WhereRestrictionOn(w => w.Word).In(words)
        .Select(w => w.Word)
        .List<string>();

    foreach(var word in words.Except(existingWords))
    {
        session.Save(new UniqueWord(word));
    }
    session.Flush();
}
于 2012-10-11T08:26:46.353 回答