У меня есть следующие два класса. Когда я сохраняю A с несколькими элементами (B), я получаю ожидаемый результат. Но когда я сохраняю изменения в A, такие как пустой список элементов (B), я ожидаю, что все элементы в таблице B будут автоматически удалены, потому что они нигде не упоминаются (запрашивать их отдельно не намерен). Вместо этого для внешнего ключа (IDofA) каждого элемента в таблице устанавливается значение Null. В моем случае это приводит к бесконечно растущей таблице (B), потому что некоторые объекты A никогда не удаляются, а просто обновляются.
public class A
{
public string Name{ get; set; }
[OneToMany(CascadeOperations = CascadeOperation.All)]
public List<B> Items { get; set; }
}
public class B
{
[ForeignKey(typeof(A))]
public string IDofA { get; set; }
}
//This is the Generic Save Method that I use for all the Objects
public virtual void Save(T element)
{
CreateID(element);
if (!RuntimeCache.Any(x => x.ID == element.ID))
{
RuntimeCache.Add(element);
}
element.UpdateChangeDate();
RunDBQueryAsync((conn) =>
{
conn.InsertOrReplaceWithChildren(element);
});
}