带有业务逻辑与代码的视图
|
对于应用程序,我需要每小时发送一次个性化的邀请电子邮件给最终用户。这些用户的电子邮件地址以及他们的其余信息在数据库中。
所有有一点
Planned.IsPlannable
设置为True
,
有一个Planned.DateStart
和一个
一定之间的Planned.DateEnd
期间可用于接收
电子邮件。
每小时大约有350条消息要发送。
所有的信息
消息中必须包含
从数据库中。
该应用程序是
.NET4.0控制台应用程序,用于数据
访问我使用Subsonic3.0。
至少有两种情况可供选择:通过以下方式检索适当的数据:
1 :)查看类似:
SELECT [Computer].ComputerName,
[User].UserEmail,
[Planned].DateAvailable,
[Planned].DatePlanned
FROM [Computer]
INNER JOIN
[Planned] ON [Computer.ComputerID] = [Planned.ComputerID]
INNER JOIN
[User] ON [Computer].UserID = [User].UserID
WHERE (DATEDIFF(dd, GETDATE(), [Planned.DateAvailable]) < 10)
AND Planned.IsPlannable = 1
并根据此视图的结果在此应用程序的C#代码中编写适当的消息。
2 :)在视图中的sql-server上编写整个消息,并返回类似
[EmailTo]
[Subject]
[Body]
然后仅遍历结果并从中创建“ 6”个对象
在这两种情况下,我都会收到如下消息:
foreach (vwGetInvitableComputer u in UserController.GetAllInvitableUsers())
{
// where the usercontroller wraps the Subsonic logic.
// the composition happens here
}
迭代C#代码中的内容,然后仅从该预格式化的数据中编写出邮件消息。
选择哪种性能和资源是明智的选择?
更新:选项2中确实存在数据库中的文本操作。但是,这是将消息体中的三个字符串替换为CompterName,DateStart和DateEnd。也许,SQL视图足够聪明,可以扩展其性能,而c#代码是否“在请求时”?
没有找到相关结果
已邀请:
2 个回复
娜拐赐巫潭
荆怖赡