Fehlermeldung:
fail: Microsoft.EntityFrameworkCore.Update[10000] An exception occurred in the database while saving changes for context type 'Readdy.Data.ApplicationDbContext'. Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.InvalidOperationException: The connection does not support MultipleActiveResultSets. at System.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__108_0(Task`1 result) at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) |
Lösungsversuche:
1.Lösungs-Versuch:
Man muss beim SQL Server Connectionstring den Parameter MultipleActiveResultSets auf true schalten…
Connectionstring:
public static string Connectionstring = "Data Source=.\\SQLEXPRESS;Initial Catalog=readdy;Integrated Security=True;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=false;MultipleActiveResultSets=True"; |
2.Lösungs-Versuch:
Alle Lese Verbindungen zum SQL Server mit await .. async aufbauen
try { //*get User Summary Table User_SumModel summary = new User_SumModel();
//< with dbContext > summary = await Database.EF_Model.dbContext.tbl_User_Sums.FirstOrDefaultAsync(u => u.IDUser == IDUser); //</ with dbContext >
//--< Increment SumCounter >-- if (summary == null) { summary = new User_SumModel(); summary.SumViews_Self = 1; summary.IDUser = IDUser; summary.dtStart = DateTime.Now; summary.dtEnd = DateTime.Now; Database.EF_Model.dbContext.tbl_User_Sums.Add(summary);
} else { summary.SumViews_Self += 1; summary.dtEnd = DateTime.Now; }
await Database.EF_Model.dbContext.SaveChangesAsync(true); //--</ Increment SumCounter >--
} finally {
} |
Teil 2
Umschreiben von synchronem Code in asynchron
var qResult= await query.FirstOrDefaultAsync(); sText = qResult.n.Title; IDNote0 = qResult.n.IDNote;
//IDNote0 = query.FirstOrDefault().n.IDNote; sImage = "https://Readdy.net/User_Files/Notes/Images/Image_" + IDNote0 + "_0.jpg"; |
3.Lösungs-Versuch:
Alle Schreib-Verbindungen zum SQL Server OHNE await .. async aufbauen !