实体框架中存储过程的映射是全有或全无的? (FUNCTIONMAPPING)

时间:2010-08-16 11:44:54

标签: entity-framework stored-procedures entity-framework-4

我收到了错误

  

找不到InsertFunctionMapping   对于映射中的EntityType'xxx'   文件。

这是公平的,因为它是真的。但那是因为我很高兴EF为我做插入。我只是想覆盖删除功能。

我认为这是EF4的改进之一?或者只是它会建立良好但仍然在使用未映射的函数时哭泣?或者有可能,但我只是遗漏了什么?

2 个答案:

答案 0 :(得分:12)

AFAIK。这是全有或全无。

如果未将实体类型的所有三个插入,更新或删除操作映射到存储过程,则在运行时执行并且抛出UpdateException时,未映射的操作将失败。

MSDN

答案 1 :(得分:1)

我有相同或类似的问题。我想只覆盖删除功能,但在EF4中不能覆盖插入和更新功能。 在我的情况下,我需要执行此操作以进行删除:

update table set deleted = 1 where id = @id

我通过这种方式解决了这个问题: 在调用方法context.SaveChanges(true)之前,我运行此代码

foreach (ObjectStateEntry entry in context.ObjectStateManager.GetObjectStateEntries(EntityState.Deleted))
{
  entry.ChangeState(EntityState.Modified);
  entry.Entity.GetType().GetProperty("deleted").SetValue(entry.Entity, true, null);
}

我是EF的初学者。现在我只是在寻找如何解决EF的一些问题,在开始基于EF开发应用程序之前我必须解决这个问题。 但现在看起来这个解决方案应该可行。我希望。