Сохранение одной сущности вместо всего контекста - вновь - PullRequest
0 голосов
/ 29 ноября 2009

Я ищу способ получить детальный контроль над тем, что сохраняется с помощью Entity Framework, а не всего ObjectContext.SaveChanges (). Мой сценарий довольно прост, и я очень удивлен, что меня не обслуживают в EF - довольно просто в NHibernate и во всех других парадигмах доступа к данным, которые я видел. Я создаю кучу данных (в пользовательском интерфейсе WPF) и позволяю пользователю точно настроить то, что предлагается, и выбрать то, что фактически передается в базу данных. Для предлагаемых организаций я:

  1. получение набора ссылочных объектов (например, языков) через мой objectcontext,
  2. создание предложенных объектов и присвоение им опорных объектов (в качестве свойств навигации), поэтому в силу их связи с опорными объектами они неявно добавляются в объектный текст
  3. Попытка создать и сохранить отдельные объекты на основе предложенных объектов.

Я полагаю, это должно быть действительно просто и тривиально, но все, что я пробовал, наткнулось на кирпичную стену, либо я установил другой объектный текст и добавил только нужную мне сущность (затем он пытается добавить весь график и завершается неудачно как это на другом объекте контекста). Я попробовал MergeOptions = NoTracking на моих ссылочных объектах, чтобы заставить Attach / AddObject не перемещаться по ним для создания графика, но безрезультатно. Я удалил свойства навигации из ссылочных объектов. Я попробовал AcceptAllChanges, который работает, но довольно бесполезен на практике, так как я все еще хочу отслеживать и сохранять другие объекты. В простом тесте я могу создать 2 из предложенных мной объектов: AddObject, который я хочу сохранить, и затем отсоединить тот, который я не вызываю, затем вызвать SaveChanges, это работает, но опять же не очень хорошо на практике. Ниже приведены несколько ссылок на некоторые изящные идеи, которые в итоге не помогают, но иллюстрируют сложность EF для чего-то такого простого. Я действительно ищу метод SaveSingle / SaveAtomic и думаю, что это довольно разумный и простой запрос для любого DAL, пусть даже передового ORM.

1 Ответ

1 голос
/ 03 декабря 2009

Я сам на это отвечу - софар, я не нашел решения для EF1. EF4 позволит вам реализовать это с самообследованием сущностей, т.е. вам нужно будет свернуть свои собственные классы с помощью шаблонов T4, так что там есть некоторая кривая обучения (см. ссылку в конце).

На данный момент мы решили предоставить интерфейсам наших доменных объектов (что раздражает меня, так как мне действительно нравится работать с классами poco в nhibernate / wcf, что убивает необходимость в этом) и реализовать «предлагаемые» объекты, с которыми мы работаем пользователь решает зафиксировать базу данных, после чего мы сопоставляем объект EntityObject.

Некоторые актуальные ответы здесь:
http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/32b04a36-0579-4d6f-af48-9cb670a3d9ff

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