Мое приложение 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). Вот что я сделал, не используя 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));
}
Я не знаю, с чего начать создание такой службы, поскольку у меня уже есть Дао, мне просто нужно инкапсулировать мой запрос.
С чего мне начать? Я видел учебник, но он говорит о создании Webservie с нуля. Что мне не хватает?
Примечание: я не использую EntityFramework