Создание файлов ADO.NET Entity Data Model, с чего начать? - PullRequest
2 голосов
/ 26 октября 2009

Наш продукт частично построен с использованием Delphi и частично .NET, и в нашем текущем состоянии перехода на .NET у нас есть словарь данных в компоненте Delphi, так что это мастер.

Исходя из этого, мы генерируем исходный код .NET с помощью шаблонов, чтобы поддерживать простые запросы, а также выполнять Linq2Sql, поскольку нашему продукту требуется SQL Server.

Однако я бы хотел перейти на новую модель Entity в .NET вместо Linq2Sql, но я не знаю, сколько это будет стоить. Все учебники или примеры, которые я нахожу, вращаются вокруг моделирования модели данных в конструкторе или извлечения ее из базы данных, но не работают для наших нужд.

В Linq2Sql мы аннотировали наши классы запросов с помощью TableMappingAttribute и ColumnMappingAttribute, а затем сгенерировали потомка DataContext, все это работает очень хорошо.

Есть ли подобный простой способ использовать вместо этого код модели Entity? Или я должен производить все эти XML-файлы и запускать инструменты для создания ресурсов и т. Д.?

Кто-нибудь был в такой ситуации и может пролить свет на это?

1 Ответ

3 голосов
/ 26 октября 2009

К сожалению для вас, я думаю, вам нужны файлы XML.

На самом деле есть 3 файла, которые составляют EDM. (хотя в visual studio они все объединены в один файл EDMX)

  • ssdl - хранилище (описывает базу данных)
  • csdl - концептуальный (Описывает объекты данных)
  • msl - отображение (описывает отображение между хранилищем и концептуальным)

Из файлов EDM EDM Generator можно использовать для генерации всех трех из соединения с базой данных, только msl и csdl из ssdl, или он может генерировать реальные объекты данных из csdl.

К сожалению, на этом использование XML не заканчивается. Во время выполнения все еще необходимо, чтобы структура сущностей выполняла перевод из объектов в хранилище и т. Д. Ссылка на 3 файла EDM должна быть указана в строке подключения платформы сущностей . (Подробнее о строках EF-соединений )

Возможно, вы могли бы придумать способы генерирования кода вашего объекта данных (или автоматически пометить ваши существующие с различными необходимыми атрибутами и дополнительными методами) - например, Linq, есть такие атрибуты, как EdmEntityTypeAttribute и EdmScalarPropertyAttribute, которые помещаются в классы свойства, но без 3-х файлов EDM структура сущностей не будет знать, что делать с вашими объектами данных. Генератор также добавляет другие вещи к классам объектов данных, такие как события изменения свойств и наследование от EntityObject. Я не уверен, что из дополнительного материала требуется для правильной работы платформы сущностей, а что только для разработчика. Я бы предположил, что события изменений свойств требуются контекстом данных для отслеживания изменений.

Здесь есть статья об инструментах EDM и некоторый код для генерации / разделения файлов EDMX на их компоненты ssdl / csdl / msl.

...