2009-06-17 2 views

ответ

3

Мы использовали EF для внутреннего проекта среднего размера. Это было n-уровневое приложение с сервером, содержащим бизнес-логику и автономный EF-уровень. Клиент был WPF-приложением (подключение к серверу через WCF).

В EF есть что-то понравиться, и это может сделать некоторые аспекты вашего DA-уровня очень быстрыми, чтобы писать, но я бы сказал, что в настоящее время он не очень хорошо поддерживает отключенные приложения. Он работает фантастически, если ваше приложение очень самодостаточно, имеет прямое соединение с базой данных и использует 1 контекст данных во всем, контекст данных управляет вашими объектами данных, извлекает данные и соответствующим образом обновляет базу данных.

Как только вы попытаетесь отключить своего клиента в любой форме структуры n-уровня, хотя все становится сложнее. Вы либо должны управлять отключением и повторным подключением своих объектов из контекстов данных, либо вам необходимо каким-либо образом сериализовать контекст данных для клиента. Вы должны использовать несколько контекстов данных (отчасти потому, что в любом случае мы были безгосударственным сервером, но также потому, что вы столкнулись с огромным беспорядком, пытающимся использовать один контекст данных для нескольких клиентов), и все становится немного сложнее управлять. Часть нашего решения заключалась в том, чтобы иметь отдельные «бизнес-объекты», созданные из нижних уровней «ef data objects». Затем EF управлял этими объектами данных (сохранял их и загружал из базы данных и т. Д.), Но наш собственный уровень BLL управлял бы бизнес-объектами. Как сохранение, так и загрузка потребовали перевода с объектов более высокого уровня на более низкие уровни или наоборот.

В целом все прошло хорошо, но я бы сказал, что EF не полностью готов к серьезному развитию уровня предприятия. Я слышал, что следующая версия EF в .net 4.0 имеет гораздо лучшую поддержку отключенных и n-уровневых приложений, но я не устал это лично.

+0

Есть ли альтернативный инструмент ORM, который вы бы рекомендовали лучше обрабатывать отключенными состояниями? – Merritt

+0

Извините. Я действительно использовал Linq-to-sql и EF. Тем не менее, есть масса других людей. NHibernate - популярный. Здесь есть список: http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#.NET Это не значит, что EF полностью не работает, просто вам нужно сделать некоторые из ваших собственных сантехнических работ, чтобы управлять пересоединением. Как я уже сказал, если вы можете подождать до .net 4.0, мне сказали, что все намного лучше. –

Смежные вопросы