Рассмотрим следующие модели / сопоставления
[DataContract]
public class CustomPhrase : ModelBase
{
private ICollection<EnglishPhrase> translations;
public CustomPhrase()
{
this.translations = new List<EnglishPhrase>();
}
[DataMember]
public virtual string Phrase { get; set; }
[DataMember]
public virtual IEnumerable<EnglishPhrase> Translations
{
get
{
return this.translations;
}
}
}
[DataContract]
public class EnglishPhrase : ModelBase
{
private ICollection<CustomPhrase> translations;
public CustomPhrase()
{
this.translations = new List<CustomPhrase>();
}
[DataMember]
public virtual string Phrase { get; set; }
[DataMember]
public virtual IEnumerable<CustomPhrase> Translations
{
get
{
return this.translations;
}
}
}
public CustomPhraseMap() : base("Translation_CustomPhrase", "CustomPhraseId")
{
this.Property(x => x.Phrase);
this.Set(
x => x.Translations,
map =>
{
map.Table("Translation_Link");
map.Key(key => key.Column("CustomPhraseId"));
map.Access(Accessor.Field);
map.Cascade(Cascade.All);
},
map => map.ManyToMany(c => c.Column("EnglishPhraseId"))
);
}
public EnglishPhraseMap() : base("Translation_EnglishPhrase", "EnglishPhraseId")
{
this.Property(x => x.Phrase);
this.Set(
x => x.Translations,
map =>
{
map.Table("Translation_Link");
map.Key(key => key.Column("EnglishPhraseId"));
map.Access(Accessor.Field);
map.Cascade(Cascade.All);
},
map => map.ManyToMany(c => c.Column("CustomPhraseId"))
);
}
Если я выполню этот бит кода, сущности будут добавлены в базу данных, но таблица ссылок Translation_Link
не обновится.
var customPhrase = new CustomPhrase { Phrase = "Gobble" };
var englishPhrase = new EnglishPhrase { Phrase = "Hello" };
customPhrase.AddTranslation(englishPhrase);
this.customPhraseRepository.Add(customPhrase);
Я не уверен, является ли это проблемой сопоставления или проблемой конфигурации хранилища. Может я добавляю ребенка не вовремя ??
Кто-нибудь еще сталкивался с этой проблемой раньше и смог ее исправить?