EF CTP5 какой элемент генерации кода выбрать? - PullRequest
1 голос
/ 05 марта 2011

С EF 4.1 в пути и CTP5 доступны в течение нескольких месяцев, я решил опробовать новую функциональность. Как я вижу, доступно несколько предметов поколения (DbContext и три разных ObjectContext's). Я также заметил, что они не являются взаимозаменяемыми - я впервые использовал POCO ObjectContext в одном из моих приложений, а сегодня переключился на DbContext, и весь мой репозиторий сломался. Он основан на LoadProperty() методах, DeleteObject() и AddObject() методах, и все они отсутствуют в классе DbSet, который используется в генерации DbContext.

Я знаю, что здесь есть отличная серия блогов http://blogs.msdn.com/b/adonet/archive/2011/01/27/using-dbcontext-in-ef-feature-ctp5-part-1-introduction-and-model.aspx, представляющая новые функциональные возможности, но в действительности никогда не говорится, когда выбирать что.

Мои требования:

  • ASP.NET MVC приложение, так что ленивый загрузка в основном не работает, потому что на странице сделать это скажет, что контекст имеет уже утилизирован (вот почему я нужна легкая поддержка для явного загрузка - в EF4 я сделал это через Include(), используя контекст POCO, который я сделал это через LoadProperty() и сейчас в DbContext я верю, что буду использовать строго типизированный Include()).
  • Нам, вероятно, не понадобится сначала код особенности (но вы никогда не знаете).

Ответы [ 2 ]

2 голосов
/ 05 марта 2011

Разница между этими двумя состоит в основном в API и наборе функций . DbContext, конечно, есть Include для запроса и Load, но вы найдете его в другом месте. Более того, при использовании сборки CTP5 вы будете строго набирать Include для ObjectSet и DbSet ( доступно на интерфейсе IQueryable в качестве метода расширения).

Явная загрузка (эквивалентная LoadProperty) выполняется методом Load для DbReferenceEntry<T> или DbCollectionEntry<T> - проверка Явная загрузка связанных сущностей . Он работает даже лучше, чем LoadProperty, потому что вы можете определить фильтр для загрузки.

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

Вы исходите из неверного предположения, что вы не можете использовать ленивую загрузку с MVC.

Если вы управляете контекстом на более высоком уровне, вы сможете сделать это без проблем.

...