Отображение хранимых процедур в Entity Framework - это все или ничего? (FunctionMapping) - PullRequest
7 голосов
/ 16 августа 2010

Я получил ошибку

Не удается найти сопоставление InsertFunction для EntityType 'xxx' в отображении файл.

Что достаточно справедливо, потому что это правда. Но это потому, что я счастлив, что EF делает вставки для меня. Я просто хочу переопределить функцию удаления.

Я думал, что это было одним из улучшений с EF4? Или это просто, что он будет работать нормально, но все равно будет плакать, когда вы используете не отображенные функции? Или это возможно, но я что-то упускаю?

Ответы [ 2 ]

12 голосов
/ 16 августа 2010

AFAIK.Это все или ничего.

Если вы не сопоставите все три операции вставки, обновления или удаления типа сущности с хранимыми процедурами, несопоставленные операции завершатся неудачно, если они будут выполнены во время выполнения, и возникнет исключение UpdateException.

MSDN

1 голос
/ 12 ноября 2010

У меня такая же или похожая проблема. Я хочу переопределить только функцию удаления, но в 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. Но теперь похоже, что это решение должно работать. Я надеюсь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...