Два потока используются, но также показывает предупреждения о миграциях, когда их нет - PullRequest
0 голосов
/ 06 августа 2020

Что-то меня беспокоило по поводу моего дизайна доступа к dbconext, потому что я получил пару столкновений, говорящих, что dbcontext используется другим потоком. Также в сообщении утверждается, что есть миграции, которые нужно запустить, но они, по определению, не обновлены. Я использую asp. net 3.1 и ядро ​​Entity framework 3.1.5

В My startup.cs я использую следующее для настройки контекста

services.AddDbContext<MISDBContext>
(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")), ServiceLifetime.Transient);

В моем контроллере я введите его следующим образом

private readonly MISDBContext _context;


public MISObjectsController(MISDBContext context, IStringLocalizer<MISObjectsController> localizer,
               IStringLocalizer<SharedResource> sharedLocalizer, UserManager<ApplicationUser> userManager, IToastNotification toast) {
        _context = context;
        _sharedLocalizer = sharedLocalizer;
        _userManager = userManager;
        var list = _userManager.Users.Select(x => new SelectListItem() { Text = x.FirstName.ToUpperInvariant() + " " + x.LastName.ToUpperInvariant(), Value = x.Id.ToString() }).ToListAsync();
        ViewBag.Users = list;
        _toast = toast;   
}

Затем в какой-то функции я бы использовал его как таковой, но я также делаю это внутри компонентов представления, и мне интересно, как вещи конфликтуют, говоря, что есть два потока в

[HttpPost]
public async Task<IActionResult> AddToAuditTrail(string updateInfo) {
        var userId = GetCurrentTennantId().Result;
        var caseOfficer = _context.Users.Where(w => w.Id == userId.ToString()).FirstOrDefault();
        Int32.TryParse(TempData.Peek("CaseId").ToString(), out int resultCaseId);
        MISAuditTrail _auditrail = new MISAuditTrail();
        _auditrail.MISObjectId = resultCaseId;
        _auditrail.TennantId = userId;
        _auditrail.CreatedBy = caseOfficer.FirstName + caseOfficer.LastName.Substring(0, 1);
        _auditrail.Action = updateInfo;
        _auditrail.AuditType = (int)MISAuditTrail.AudItTypes.NOTES;
        _auditrail.CreatedDate = DateTime.Now;
        _auditrail.isActive = true;
        _auditrail.isDeleted = false;

        _context.Add(_auditrail);
        await _context.SaveChangesAsync();
        _toast.AddSuccessToastMessage("You have added an update to the case");

        return RedirectToAction("Edit", new { id = resultCaseId });
    }

Было бы здорово, если бы кто-нибудь смог проинформировать меня о том, почему я получаю ошибку использования двух потоков.

...