Пока я не использовал MVP и попробовал шаблон длинного разговора, подобный этому:
private void SaveItem(object sender, EventArgs e)
{
using (var transaction = _businessTransactionFactory.Create())
{
var currentMobileDevice = GetCurrentMobileDevice();
if (currentMobileDevice.Id == Guid.Empty)
{
transaction.MobileDeviceRepository.Save(currentMobileDevice);
}
else
{
transaction.MobileDeviceRepository.Update(currentMobileDevice);
}
transaction.Commit();
LoadData(transaction);
}
}
private MobileDevice GetCurrentMobileDevice()
{
return (MobileDevice)MobileDevicesBindingNavigator.BindingSource.Current;
}
Проблемы, с которыми я столкнулся:
- Мне всегда приходится работать с отдельными сущностями.
Работа с отделенными объектами EntityFramework заставляет обновлять ВСЕ столбцы вместо тех, которые изменяются:
public void Update(T entity)
{
if (_objectContext.ObjectStateManager.GetObjectStateEntry(entity).State == EntityState.Detached)
{
_objectSet.Attach(entity);
_objectContext.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
}
}
Как вы обрабатываете контекст в приложении Windows Forms?
Что такое плюсы и минусы обоих?