Класс x.Savechanges (): не найдено подходящего метода для переопределения - PullRequest
0 голосов
/ 27 августа 2018

Я хочу проверить db.SaveChanges() для обработки ошибок, и я поместил его в метод EFentities class 'SaveChanges(), но у меня есть эта ошибка для SaveChanges():

Нетнайден подходящий метод для переопределения

Вот мой код:

public partial class EFentities
{
    EF db = new EF();

    public override int  SaveChanges()
    {
        try
        {
            return base.SaveChanges();
        }
        catch (DbEntityValidationException ex)
        {
            // Retrieve the error messages as a list of strings.
            var errorMessages = ex.EntityValidationErrors
                    .SelectMany(x => x.ValidationErrors)
                    .Select(x => x.ErrorMessage);

            // Join the list to a single string.
            var fullErrorMessage = string.Join("; ", errorMessages);

            // Combine the original exception message with the new one.
            var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);

            // Throw a new DbEntityValidationException with the improved exception message.
            throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
        }
    }
}

1 Ответ

0 голосов
/ 27 августа 2018

Вы получаете Не найдено подходящего метода для переопределения ошибки , потому что вы не определяете SaveChanges() виртуальный метод в другой части частичного класса, а также не определяете какой-либо базовый класс, в котором виртуальный метод наследуется от.

Метод SaveChanges(), доступный внутри System.Data.Entity.DbContext класса с virtual подписью, подобный этому:

public virtual int SaveChanges()

Следовательно, вы должны добавить DbContext какбазовый класс, унаследованный EFEntities для работы ключевого слова override:

using System.Data.Entity;

public partial class EFEntities : DbContext // add this base class
{
    public override int SaveChanges()
    {
        // manual override goes here

        return base.SaveChanges();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...