Один из самых "горячих" вопросов: как разделить большую модель данных (EDM) на несколько частей. Я уже затрачивал этот вопрос в обсуждениях вот этого поста.
Суть моих рассуждений была такова: делите модель только если ее действительно можно разделить на несколько независимых частей. Иначе делайте большую общую модель и шарьте ее между всеми модулями системы.
Однако, большая модель это не только
<Schema Namespace="NorthwindModel" Alias="Self" xmlns="http://schemas.microsoft.com/ado/2006/04/edm">
<Using Namespace="NorthwindModelBase" Alias="BaseModel" />
Подробно о том, как разделить модель на несколько частей, с пошаговыми инструкциями написано в блоге разработчиков ADO.NET "Working With Large Models In Entity Framework – Part 2"
Есть однако одна неприятная деталь. Точнее две.
Первая, подключаемые модели
Вторая, модели могут ссылаться друг на друга только в одном направлении, а это автоматически означает, что navigation property, а иными словами, ссылочные свойства на объекты в другой модели запрещены. И это уже плохо. Вернемся к началу моего поста, где я говорил о том, что делить модель на части можно только если эти части не зависимы. Выходит, к сожалению, я был все же прав.
4 комментария:
Привет всем!Я имею реальный опыт использования EF. Проблема описанная здесь имеет простое решение (такой же приём применяли и в LINQ to SQL) каждая частичная модель EDM делается в своей папке = namespase и разные EDM не пересекаются! Есть реальные трудности использования EF. Частично я их описал в своём блоге http://www.itcommunity.ru/blogs/mikebb/default.aspx
Небольшое добавление. Дизайнер EDM в VS 2008 по мнению многих охватывает 10% функционала и во многих случаях требуется ручная корректировка .edmx Здесь инормация как это деалть http://blogs.msdn.com/adonet/archive/2008/12/17/new-entity-framework-documentation-topics.aspx
> каждая частичная модель EDM делается в своей папке = namespase и разные EDM не пересекаются!
Ну, я в общем-то об этом и говорил в посте. Если части модели не пересекаются, то разделить не проблема.
А вот если какие-то сущности должны присутствовать в обоих моделях, тут возникают сложности. Одна сущность будет представлена в каждой модели своим иклассом, а это не удобно.
А не проще реализовать такой класс который бы считывал нужные данные с класса таблиц, а потом записывал это все в edmx файл?
Отправить комментарий