Я только что перешел на mvc net core 3.0 с net core 2.2. Теперь каждый раз, когда я пытаюсь добавить новую запись в базу данных, приложение создает 9 копий той же записи в базе данных. У меня есть много таблиц в моей базе данных, и это происходит на каждой из них. Когда я использовал net core 2.2, все работало нормально.
Я использую этот код для добавления новой записи в БД:
Файл контекста БД:
public virtual async Task<T> AddAsync(T t)
{
Context.Set<T>().Add(t);
await Context.SaveChangesAsync();
return t;
}
Эта функция вызывается из файла репозитория db companies:
public async Task<Company> AddCompany(Company item)
{
var savedItem = await base.AddAsync(item);
var exist = Context.Companies.Find(savedItem.Id);
if (exist == null) return exist;
return savedItem;
}
Репозиторий Db вызывается из файла репозитория компании:
public async Task<Company> AddCompany(Company item)
{
return await _companiesDbRepository.AddCompany(item);
}
Репозиторий компаний вызывается из контроллера Mvc:
public async Task<IActionResult> AddCompany(Company item)
{
var newcompany = await _companiesRepository.AddCompany(item);
}
Контроллер вызывается из jquery ajax onКлиентская сторона и запрос к контроллеру отправляют по кнопке «Добавить компанию» клик.
$(document).on("click", "#addCompany",
function (e) {
e.preventDefault();
e.stopPropagation();
var route="...";
var formId="...";
var form = $(formId);
form.validate();
if (!form.valid()) return;
addCompany(route,formId);
});
function addCompany(route, formId) {
alert("start");
var form = $(formId);
var formData = form.serialize();
$.ajax({
async: true,
url: route,
type: "POST",
cache: false,
data: formData,
success: function (result) {
alert("sucess");
},
error: function (xhr) {
alert("error");
}
});
};
Я вижу на экране «старт» оповещение 9 раз. Через некоторое время я вижу предупреждение об успехе 9 раз.
Когда я пытаюсь отследить код в отладчике, я вижу, что выполнение хаотично переходит от одной функции к другой - несколько раз одна строка кода водна функция, после этого несколько раз в другую функцию. После этого он возвращается к другой строке первой функции, и все повторяется 20-30 раз.
Пожалуйста, помогите. Я никогда не видел ничего странного за всю свою долгую карьеру программиста.
И самое странное, что все эти 9 записей обычно сохраняются на сервере MS Db. У них есть все поля и ключи. Но когда я открываю любой из них на экране, это показывает, что все поля пусты. Но с помощью того же приложения я все еще могу нормально открывать и видеть на экране записи, которые были сохранены до того, как я перешел на Core 3.0