Как навсегда удалить значения из базы данных - PullRequest
0 голосов
/ 04 мая 2018

У меня есть метод, который я вызываю из javascript, метод предполагает постоянное удаление записей, но он не входит в метод, если метод имеет DataContext db = new DataContext();, он выдает ошибку Internal Server Error

public void PermanantlyDeleteComment(GetCommentInput input)
{
    DataContext db = new DataContext();
    //Follow by the code to delete the comment
}

Если я закомментирую DataContext db = new DataContext(); точка останова вступит в силу.

Я думаю, что проблема с текстом данных, но я знаю, знаю, где

Вот текстовый текст данных

public DataContext() : base("name=Default")
{
    this.Configuration.AutoDetectChangesEnabled = true;
    this.Configuration.LazyLoadingEnabled = true;
}

Я использую DataContext, потому что шаблон abp не хочет удалять навсегда, только мягкое удаление, если у вас есть способ, который я могу жестко удалить с помощью шаблона, пожалуйста, дайте мне знать.

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Я обнаружил, что DataContext был верным, просто у меня была другая версия EntityFramework в моей Библиотеке базы данных (в которой DataContext.cs) и в моей Веб-библиотеке

0 голосов
/ 04 мая 2018

Ответил в этой теме: https://forum.aspnetboilerplate.com/viewtopic.php?p=6180#p6193

Вы можете переопределить метод CancelDeletionForSoftDelete в вашем DbContext и условно предотвратить отмену.

Итак, вот так:

protected override void CancelDeletionForSoftDelete(EntityEntry entry)
{
    if (IsSoftDeleteFilterEnabled)
    {
        base.CancelDeletionForSoftDelete(entry);
    }
}

Использование:

public void PermanantlyDeleteComment(GetCommentInput input)    
{
    using (CurrentUnitOfWork.DisableFilter(AbpDataFilters.SoftDelete))
    {
        // The code to delete the comment
    }
}
...