У меня есть приложение-тезаурус, построенное на NHibernate.Модель данных очень проста:
public class Word
{
public virtual int Id { get; set; }
public virtual string Text { get; set; }
public virtual IList<Word> Synonyms { get; set; }
public virtual IList<Word> Antonyms { get; set; }
}
Таким образом, каждое слово имеет список синонимов и список антонимов.Я думал, что сопоставление также будет прямым:
public class WordMapping : ClassMap<Word>
{
public WordMapping()
{
Id(x => x.Id);
Map(x => x.Text);
HasMany(x => x.Synonyms).Cascade.AllDeleteOrphan();
HasMany(x => x.Antonyms).Cascade.AllDeleteOrphan();
}
}
Когда я смотрю на таблицу, сгенерированную в MS SQL Server 2008, я вижу только один ключевой столбец для двух отношений HasMany:
Id int
Text nvarchar(255)
Word_id int
Я думаю, это вызывает некоторые странные вещи, когда я вставляю данные.Когда я получаю списки после выполнения некоторых вставок, и Synonyms
, и Antonyms
содержат одинаковые Words
, но Words
являются просто, казалось бы, произвольными подмножествами того, что должно быть в двух списках.
У меня есть проблема, привязанная правильно?Если так, как я могу это исправить?