Veri güncelleme/yeniden kazanma için LINQ aracılığıyla erişilen bir MS SQL 2008 veritabanına sahibim.Entity Framework ile bir veritabanına eşzamanlı erişim == EntityException
Benim linq'm yoğun bir uygulama için bir PerCall örnekleme modunda WCF servisleri tarafından erişilir. Bu uygulama, hizmete çağrı yapan birkaç iş parçacığına sahiptir ve birkaç uygulama da gün içinde çalışmaktadır.
System.Data.EntityException yakalandı İleti sağlayıcı bağlantısı üzerinde bir işlem başlatılırken bir hata oluştu:
sık sık oluyor bazı EntityException ettik. Ayrıntılar için iç istisna bakınız. Kaynak = System.Data.Entity StackTrace: System.Data.Objects.ObjectContext.SaveChanges de System.Data.EntityClient.EntityConnection.BeginTransaction() de System.Data.EntityClient.EntityConnection.BeginDbTransaction (ısolationlevel IsolationLevel) de (SaveOptions seçenekler) D Infoteam.GfK.TOMServer.DataServer.DataServer.SaveChanges() en : \ Çalışma \ XYZWASDF \ DataServer \ DataServer.cs: hattı 123 InnerException: System.Data.SqlClient.SqlException Mesaj = Une nouvelle işlem n'est pas autorisée parce que d'autres konuları en cours d'exécution dans la oturumu. Kaynak = .NET SqlClient veri sağlayıcısı HataKodu = -2146232060 Sınıf = 16 LineNumber = 1 sayısı = 3988 Prosedür = "" Sunucu = ift-srv114 Devlet = 1 StackTrace: System.Data.SqlClient at System.Data.SqlClient.SqlInternalConnection.OnError de .SqlConnection.OnError (SqlException istisna, Boole breakConnection) (SqlException istisna, Boole breakConnection) System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning de () System.Data.SqlClient de . TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHand ler, TdsParserStateObject stateObj) System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest de (byte [] tamponu, TransactionManagerRequestType talep String transactionName, TransactionManagerIsolationLevel isoLevel, ınt32 zaman aşımı, SqlInternalTransaction işlem, TdsParserStateObject stateObj, Boole isDelegateControlRequest) System.Data.SqlClient de Sistem de System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransaction de .SqlInternalConnectionTds.ExecuteTransactionYukon (transactionRequest transactionRequest, dize transactionName, ısolationlevel iso, SqlInternalTransaction internalTransaction, Boole isDelegateControlRequest) (transactionRequest transactionRequest, dize adı, ısolationlevel iso, SqlInternalTransaction internalTransaction, Boole isDelegateControlRequest) .Data.SqlClient.SqlInternalConnection.BeginSqlTransac System.Data.Common.DbConnection.BeginTransaction de System.Data.SqlClient.SqlConnection.BeginDbTransaction (ısolationlevel IsolationLevel) de System.Data.SqlClient.SqlInternalConnection.BeginTransaction (ısolationlevel izo) de tion (ısolationlevel izo String transactionName) (System.Data.EntityClient.EntityConnection.BeginDbTransaction at ısolationlevel IsolationLevel) (ısolationlevel IsolationLevel) InnerException:
(Maalesef çok okunabilir değil). (Dahili istisnanın mesajı "Yeni bir işleme izin verilmez, çünkü oturumda çalışan başka konular vardır."
Ben bu istisna yaptığında bunun tamamen rastgele değil, ben bir döngü içinde değilim, kontrol ettik ve bunu önlemek konusunda hiçbir fikrim herhangi bir yardım gerçekten takdir edilecektir.:)
teşekkür ederizEDIT: burada kodunuzu görmeden BAZEN
//My DataServer method, which is a singleton
[MethodImpl(MethodImplOptions.Synchronized)]
public void SaveChanges()
{
lock (_lockObject)
{
try
{
_context.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
_changeListener.ManageIDAfterInsert();
}
catch (Exception ex)
{
Logger.Instance.Error("[DataServer:SaveChanges] Got an error when trying to save an object", ex);
//HERE I've this error
}
}
}
//One example where I can have exception sometimes, this is called through a WCF service, so I have a method which attach the object and then save it
private OrderStatus AddOrderStatus(OrderStatus orderStatus)
{
DataServer.DataServer.Instance.InsertOrUpdateDetachedObject(orderStatus);
return orderStatus;
}
Bu hataya neden olan kodu gösterebilir misiniz? –