创建服务以从背后的代码中调用Dao

时间:2019-01-17 09:27:11

标签: c# asp.net service dao code-behind

我的ASP.NET应用程序不包含任何业务层,我们使用“ ActionProcessor.ProcessActionAndResponse”先调用Dao,然后在另一个文件中调用Action.cs(例如):

public class AdvertiserGroupLoadPartnerAction : BaseAction
{
    private AdelContext _context = null;
    private long _partnerId = ValueTypeUtils.Instance.LongNull;

    #region CONSTRUCTORS
    // ----------------------------------------------------------
    // Members
    // ----------------------------------------------------------

    public AdvertiserGroupLoadPartnerAction(AdelContext context, long partnerId)
    {
        _context = context;
        _partnerId = partnerId;
    }
    #endregion

    #region METHODS
    // ----------------------------------------------------------
    // Methods
    // ----------------------------------------------------------

    /// <summary>
    /// Creates a partner
    /// </summary>
    public override ActionResponse Execute()
    {   
        ActionResponse response = new ActionResponse();

        IPartnerDao dao = (IPartnerDao)GetDao(typeof(IPartnerDao));
        PartnerDo partner = dao.FindByPrimaryKey(_partnerId);

        response.Add("Partner", partner);

        return response;
    }
    #endregion
}

在我后面的代码中:

ActionProcessor.ProcessActionAndResponse(new AdvertiserGroupLoadPartnerAction(AdelContext, partIdt));

要在视图中设置全局属性:

public PartnerDo Partner
{
  get { return _partner; }
  set { _partner = value; }
 }

我的增强功能

我发现以前的方法不切实际。就我而言,我需要根据下拉列表(AdvertiserList)中的选定值更新checkobx。这是我没有使用ActionProcessor的情况,否则,我将不得不再次创建一个新文件:

private void AdvertiserList_SelectChanged(object sender, EventArgs e)
{
DropDownList advertiserList = (DropDownList)sender;
IPartnerDao partnerDao = (IPartnerDao)DaoFactory.Instance.GetDao(typeof(IPartnerDao));
PartnerDo partner = partnerDao.FindByPrimaryKey(ConvertToLong(advertiserList.SelectedValue))

if (partner != null)
{
   switch (partner.ClientType)
    {
        case ClientType.NewClient:
            NewClientRadio.Checked = true;
            break;
        case ClientType.LoyalClient:
            LoyalClientRadio.Checked = true;
            break;
        case ClientType.Renewing:
            RenewingRadio.Checked = true;
            break;
    }
  }
}

我不喜欢从后面的代码中调用Dao,它可能会冻结应用程序,我还尝试放置Async任务。

我想创建一个服务:

PartnerDo partner = new PartnerDo();
using (ServiceChannel<IAdvertiserService> channel = new ServiceChannel<IAdvertiserService>())
{
partner = channel.Service.GetAdvertiserByPrimaryKey(ConvertToLong(advertiserList.SelectedValue));
}

由于我已经有一个Dao,所以我不知道从哪里开始创建这样的服务,我只需要封装查询即可。

我应该从哪里开始?我看过教程,但是它谈论从头开始创建Webservie。我想念什么?

注意:我不使用EntityFramework

0 个答案:

没有答案