EntityDataSource Override с пользовательским Удалить - PullRequest
3 голосов
/ 25 ноября 2010

У меня есть проект ASP .net C #, использующий EntityDataSource с DevExpress aspxGridView, и он отлично работает, позволяя мне выбирать, обновлять, вставлять и удалять.Однако я хотел бы использовать вместо этого пользовательский метод удаления, который в основном просто выполняет обновление (просто устанавливая активный флаг в false) вместо реального удаления.

У меня такое чувство, что мне нужно использовать событие entitydatasource или grid onrowdeleting, но это мой первый проект с Entity Framework 4.0, поэтому я все еще нахожусь на ногах.Я понятия не имею, если мне нужно создать метод обновления переопределения в коде edmx файла.

Очень ценю любую помощь.

1 Ответ

6 голосов
/ 25 ноября 2010

Вы можете зарегистрировать обработчик в событии SavingChanges, чтобы выполнить желаемое. как то так:

public partial class AWEntities{ 

partial void OnContextCreated()
{
    this.SavingChanges += new EventHandler(context_SavingChanges);// Register the handler for the SavingChanges event.
}

private static void context_SavingChanges(object sender, EventArgs e)// SavingChanges event handler.
{
    // Get all in Deleted state
    foreach (ObjectStateEntry entry in
        ((ObjectContext)sender).ObjectStateManager.GetObjectStateEntries(EntityState.Deleted))
    {
        if (entry.Entity.GetType() == typeof(MyType)))
        {
            // do what you want.
        }
    }
}
}

http://msdn.microsoft.com/en-us/library/cc716714.aspx

ИЛИ Вы можете отобразить хранимую процедуру, чтобы выполнить удаление так, как вы хотите. http://learnentityframework.com/LearnEntityFramework/tutorials/using-stored-procedures-for-insert-update-amp-delete-in-an-entity-data-model/

мне больше нравится второй вариант ...

...