Entity Framework и временные объекты - PullRequest
2 голосов
/ 06 августа 2009

Я новичок в Entity Framework и в настоящее время экспериментирую с ним. Я создал простую базу данных, настроил модель в VS2008 и получил код, который будет запрашивать базу данных с использованием EF, а также вставлять новые данные.

Есть одна вещь, которая меня немного смущает. У меня есть объект (настроенный в моей модели) с именем Customer, и как часть логики моего приложения я хочу иметь возможность создать временный объект Customer для некоторой промежуточной обработки. Этот конкретный объект никогда не должен храниться в базе данных. Однако я заметил, что как только я вызываю SaveChanges (), клиент сохраняется в базе данных. Это не то, чего я хочу. Я был бы счастлив вызвать AddCustomer () для объектов, которые я делаю хочу включить - я просто хочу иметь возможность создать временный экземпляр для собственного использования.

Я обнаружил, что могу вызвать Detach () и передать свой временный экземпляр, что помешает его сохранению. Однако я не уверен, что это лучший способ сделать это, поскольку временный объект Customer будет иметь связанные объекты, и если я не пройду и не отсоединю их все, я могу оказаться в горячей воде.

Возможно, я что-то неправильно понимаю о том, как должен работать EF, или что я упускаю что-то очевидное - я надеюсь, что кто-то может исправить меня!

Спасибо

John

Ответы [ 3 ]

0 голосов
/ 02 октября 2009

Почему бы не иметь другой класс Customer с такими же полями?

0 голосов
/ 03 марта 2011

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

objectContext.Detach(newEntity);
0 голосов
/ 06 августа 2009

Если вы хотите иметь временный экземпляр сущности, который никогда не будет снова подключен к EF, используйте этот Entity Cloner для клонирования сущности

Если вы пытаетесь отключить объект, отправьте его по проводам куда-нибудь (скажем, передайте его клиенту через службу, чтобы изменить его, а затем снова верните) и снова объедините изменения в EF - прямо сейчас это не поддерживается напрямую. Как бы то ни было, вы можете попробовать эти решения

Сумка сущности:

EFContrib (вам нужен PostSharp4EF)

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