我正在编写一个MVC 5互联网应用程序,在那里我检索需要发送电子邮件的许多Account
个对象,然后我发送电子邮件。发送电子邮件后,我需要更新每个DateTime
对象中的Account
字段,以存储值以显示电子邮件已发送。
这是我的代码:
public async Task SendDailyExpirationEmails(int dayInterval)
{
IEnumerable<Account> freeTrialAccounts = GetFreeTrialAccountsForSendDailyExpirationEmails(dayInterval).ToList();
IEnumerable<Account> paidServiceAccounts = GetPaidServiceAccountsForSendDailyExpirationEmails(dayInterval).ToList();
await SendFreeTrialSubscriptionExpirationEmails(freeTrialAccounts);
await SendPaidSubscriptionExpirationEmails(paidServiceAccounts);
}
freeTrialAccounts
和paidServiceAccounts
的SendEmail函数使用ForEach Loop
循环遍历Account
中的每个IEnumerable
。
我的问题是:
我应该在完成SendEmail功能之后还是在SendEmail功能中更新DateTime
字段?
这种情况是否有共同的编码习惯?
提前致谢。
答案 0 :(得分:0)
为了保持DateTime值的精确度以便在减少数据库调用时尽可能正确,您将希望在电子邮件发送后立即对其进行记录,但是等待信息持续到您的电子邮件流程已完成。
我想说有一个类属性可以跟踪每封电子邮件的发送时间,然后在发送完所有电子邮件后,拨打电话到数据库以更新发送的日期/时间。
如果你有一些其他工作/任务/应用程序尽快依赖这些信息,那么你需要在发送电子邮件后立即保留数据。否则我没有看到延迟它的问题。