मेरे पास कॉलम आईडी (प्राथमिक कुंजी, स्वप्रेरित) और सामग्री (पाठ) के साथ एक तालिका संदेश है।
मेरे पास एक उपयोगकर्ता है जिसमें कॉलम उपयोगकर्ता नाम (प्राथमिक कुंजी, पाठ) और हैश है।
एक संदेश एक प्रेषक (उपयोगकर्ता) द्वारा कई प्राप्तकर्ताओं (उपयोगकर्ता) को भेजा जाता है और एक प्राप्तकर्ता (उपयोगकर्ता) के पास कई संदेश हो सकते हैं।
मैंने दो स्तंभों के साथ एक तालिका Message_Recipients बनाया: MessageID (संदेश तालिका की आईडी स्तंभ और प्राप्तकर्ता (उपयोगकर्ता तालिका में उपयोगकर्ता नाम स्तंभ का जिक्र करते हुए)। यह तालिका प्राप्तकर्ता और संदेशों के बीच कई संबंध का प्रतिनिधित्व करती है।
इसलिए, मेरे पास यह प्रश्न है। डेटाबेस में संग्रहीत होने के बाद एक नए संदेश की आईडी बनाई जाएगी। लेकिन इस नए मैसेजआईडी को पुनः प्राप्त करने के लिए मैं अभी कैसे भेजे गए MessageRow का संदर्भ रख सकता हूं?
मैं पाठ्यक्रम की अंतिम पंक्ति के लिए डेटाबेस को हमेशा खोज सकता हूं, लेकिन यह संभवत: एक अलग वातावरण में एक अलग पंक्ति को वापस कर सकता है?
संपादित करें: जैसा कि मैंने इसे SQLite के लिए समझा है आप इसका उपयोग कर सकते हैं SELECT last_insert_rowid()
। लेकिन मैं ADO.Net के इस कथन को कैसे कहूँ?
मेरी दृढ़ता कोड (संदेश और संदेश डेटा प्राप्तकर्ता डेटाटेबल हैं):
public void Persist(Message message)
{
pm_databaseDataSet.MessagesRow messagerow;
messagerow=messages.AddMessagesRow(message.Sender,
message.TimeSent.ToFileTime(),
message.Content,
message.TimeCreated.ToFileTime());
UpdateMessages();
var x = messagerow;//I hoped the messagerow would hold a
//reference to the new row in the Messages table, but it does not.
foreach (var recipient in message.Recipients)
{
var row = messagesRecipients.NewMessages_RecipientsRow();
row.Recipient = recipient;
//row.MessageID= How do I find this??
messagesRecipients.AddMessages_RecipientsRow(row);
UpdateMessagesRecipients();//method not shown
}
}
private void UpdateMessages()
{
messagesAdapter.Update(messages);
messagesAdapter.Fill(messages);
}