我有一个使用 EntityDataSource 和 DevExpress aspxGridView 的 ASP .net C# 项目,它运行良好,允许我选择、更新、插入和删除。但是,我想使用自定义删除方法,而该方法基本上只是进行更新(只是将事件标志设置为 false)而不是真正的删除。
我有一种感觉,我需要使用实体数据源或网格 onrowdeleting 事件,但这是我使用 Entity Framework 4.0 的第一个项目,所以仍然找不到我的脚。我不知道是否需要在 edmx 代码隐藏文件中创建一个覆盖更新方法。
非常感谢任何帮助。
最佳答案
您可以在 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/
我更喜欢第二种选择...
关于c# - 使用自定义删除覆盖 EntityDataSource,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4276517/