ASP .NET Web API:使用数据库数据初始化集合的最佳位置是什么?

时间:2018-06-20 13:33:22

标签: asp.net-web-api

我有ASP .NET Web API应用程序。我的一位控制器使用EmailNotificationService。该服务负责向其他用户发送电子邮件,并由Unity注入到控制器中。电子邮件模板存储在数据库中。因此,我正在寻找一种立即获取此模板的方法。我不想在EmailNotificationService构造函数中执行数据库请求。它应该负责创建对象而不是获取数据。这种情况的基本做法是什么?先感谢您。

1 个答案:

答案 0 :(得分:1)

类似这样的东西:

public interface IEmailTemplateDataStore()
{
    ICollection<MyTemplate> GetAllTemplates();
}

public EmailNotificationService : IEmailNotificationService
{

    private readonly IEmailTemplateDataStore EmailTemplateDataStore;

    public EmailNotificationService(IEmailTemplateDataStore ietds)

        this.EmailTemplateDataStore = ietds;

    }

    private ICollection<MyTemplate> _templates;

    private ICollection<MyTemplate> Templates
    {
        get
        {
            if (null == this._templates)
            {
                this._templates = this.EmailTemplateDataStore.GetAllTemplates(); /* if null, populate */

                if (null == this._templates)
                {
                    throw new NullReferenceException("EmailTemplateDataStore.GetAllTemplates returned null");
                }
            }

            return this._templates;
        }
    }

    public DoSomethingOne()
    {
            ICollection<MyTemplate> temps = this.Templates;
            foreach (MyTemplate temp in temps)
            {

            }
    }

    public DoSomethingTwo()
    {
            ICollection<MyTemplate> temps = this.Templates;
            foreach (MyTemplate temp in temps)
            {

            }
    }

}