Что-то меня беспокоило по поводу моего дизайна доступа к 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 });
}
Было бы здорово, если бы кто-нибудь смог проинформировать меня о том, почему я получаю ошибку использования двух потоков.