मेरे पास निम्न कोड है जो एक लेनदेन में है। मुझे यकीन नहीं है कि मुझे कब/कब काम की अपनी इकाई का काम करना चाहिए। जैसे -निम्नलिखित कोड में कौन सी पंक्ति मुझे काम की मेरी इकाई को प्रतिबद्ध करनी चाहिए?
उद्देश्य पर, मैं मैं Respoistory किस प्रकार उपयोग कर रहा हूँ का उल्लेख नहीं किया गया है। LINQ-टू-Sql, इकाई की रूपरेखा 4, NHibernate, आदि
कोई जानता है जहां, वे कृपया उसका वर्णन क्यों उन्होंने कहा है, जहां? (मैं उदाहरण के माध्यम से पैटर्न को समझने की कोशिश कर रहा हूं, क्योंकि मेरे कोड को काम करने के विरोध में)।
यहाँ मैं क्या कर लिया है: -
using
(
TransactionScope transactionScope =
new TransactionScope
(
TransactionScopeOption.RequiresNew,
new TransactionOptions
{ IsolationLevel = IsolationLevel.ReadUncommitted }
)
)
{
_logEntryRepository.InsertOrUpdate(logEntry);
//_unitOfWork.Commit(); // Here, commit #1 ?
// Now, if this log entry was a NewConnection or an LostConnection,
// then we need to make sure we update the ConnectedClients.
if (logEntry.EventType == EventType.NewConnection)
{
_connectedClientRepository.Insert(
new ConnectedClient { LogEntryId = logEntry.LogEntryId });
//_unitOfWork.Commit(); // Here, commit #2 ?
}
// A (PB) BanKick does _NOT_ register a lost connection,
// so we need to make sure we handle those scenario's as a LostConnection.
if (logEntry.EventType == EventType.LostConnection ||
logEntry.EventType == EventType.BanKick)
{
_connectedClientRepository.Delete(
logEntry.ClientName, logEntry.ClientIpAndPort);
//_unitOfWork.Commit(); // Here, commit #3 ?
}
_unitOfWork.Commit(); // Here, commit #4 ?
transactionScope.Complete();
}
मुझे लगता है कि आप काम संभाल लेन-देन की यूनिट ... –
मुझे लगता है अपने UOW TransactionScope के बारे में पता है यह बताने के लिए होता है। यह जानना चाहिए कि जब आप लेनदेन करते हैं तो खुद को कब प्रतिबद्ध करना है। – Ryan
निश्चित रूप से यह इस बात पर निर्भर करता है कि '_unitOfWork' कहां घोषित किया गया है? –