【发布时间】:2020-12-13 22:01:48
【问题描述】:
我正在尝试更新表中的一行。 如果 row.FirstMessageId == null 然后我向 Messages 表询问该特定聊天的第一条消息。 然后我将 Message.id 放入 row.FirstMessageId
但是……什么也没有发生。数据库未更新。
我错过了什么? 谢谢你。 :)
using (ChatsTableAdapter chatsTableAdapter = new ChatsTableAdapter())
using (ArchiveDataSet.ChatsDataTable chats = chatsTableAdapter.GetData())
foreach (ArchiveDataSet.ChatsRow chat in chats)
{
if (chat.IsFirstMessageIdNull())
using (ArchiveDataSet.MessagesDataTable messages =
new MessagesTableAdapter().GetFirstMessage
(chat.ChatId))
if (messages.Rows.Count is 1)
{
ArchiveDataSet.MessagesRow message = (ArchiveDataSet.MessagesRow)(messages.Rows[0]);
chat.FirstMessageId = message.MessageId;
chat.AcceptChanges();
}
}
【问题讨论】:
-
你调试了吗?
chats变量中有数据吗? -
你是否设置了一些断点来检查?
-
你确定你连接db成功了吗?
-
很高兴您找到了一些可行的方法,但您是否考虑过使用 ORM 为您处理数据库交互? LINQtoSQL 仍然是 .NET 的一部分,Entity Frameworks 是一个丑陋但用途广泛的系统,Linq2DB 相当容易使用......有很多替代品可以让您的生活变得更简单。
-
@MarioLOBO 相信我,一个好的 ORM 会让事情变得更简单。这就是他们的设计目的。花一天时间,学习如何使用 Linq2DB 或其他东西,你不会后悔的。 (我偶尔会为 Linq2DB 做出贡献,仅供参考。)