我有一个使用带有DevExpress aspxGridView的EntityDataSource的ASP .net C#项目,它非常有用,可以让我选择,更新,插入和删除。但是我想使用自定义删除方法,而不是基本上只进行更新(只是将活动标志设置为false)而不是真正的删除。
我有一种感觉,我需要使用entitydatasource或网格onrowdeleting事件,但这是我的第一个项目与Entity Framework 4.0,所以仍然找到我的脚。我不知道是否需要在edmx代码后台文件中创建覆盖更新方法。
非常感谢任何帮助。
答案 0 :(得分:6)
您可以在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/
我更喜欢第二种选择......