Могу ли я использовать Entity Framework, как я использую LINQ to SQL? - PullRequest
3 голосов
/ 10 марта 2009

Я начал экспериментировать с LINQ to SQL, и сейчас я в основном создаю классы с декораторами отображения LINQ - тем самым выбирая, какие части схемы таблицы БД я хочу включить в мои классы.

Простой пример:

private DateTime? _LocalCopyTimestamp = (DateTime)SqlDateTime.MinValue;
[Column(Name = "recaLocalCopyTimestamp", Storage = "_LocalCopyTimestamp", CanBeNull = true)]
public DateTime? LocalCopyTimestamp
{
    get
    {
        return this._LocalCopyTimestamp;
    }
    set
    {
        this._LocalCopyTimestamp = value;
    }
}

Я не использую и не хочу прибегать к инструментам моделирования из-за ограничений проекта (способ обработки изменений схемы и потому что существует схема базы данных, и она слишком органична и не является строгой)

Есть ли способ обеспечить такую ​​гибкость в Entity Framework без необходимости включать файлы информации о схеме и / или множество отдельных файлов кода?

Могу ли я затем создать классы, которые "используют" более одной базовой таблицы?

Может кто-нибудь указать мне документацию по этому поводу?

Ответы [ 2 ]

8 голосов
/ 10 марта 2009

Запрашиваемая вами функция (напишите классы C # и сгенерируйте свою модель из них) называется командой Entity Framework " Model First ". Он не существует в текущей поставляемой версии Entity Framework, но является запланированной функцией для следующей версии. Если вы посмотрите переговоры Entity Framework с PDC , вы сможете увидеть демонстрации этой новой функции. В текущей версии вам не нужно писать «много» файлов сопоставления, но вам нужен один (файл EDMX), и он должен быть XML.

Да, вы можете создавать классы сущностей, которые используют более одной базовой таблицы. Это называется " Разделение сущностей ." Пошаговые инструкции по ссылке. В общем, вы обнаружите, что Entity Framework поддерживает много более сложных сценариев сопоставления, чем LINQ to SQL.

Я боюсь, что должен полностью не согласиться с Марком относительно написания EDMX без использования дизайнера. Написание EDMX без использования дизайнера не только возможно, но для проектов, выходящих за определенную сторону, это практически неизбежно. Несколько моментов по этому поводу:

  1. Для большей части ранней истории (до RTM; " ObjectSpaces ") Entity Framework написание файлов XML вручную было единственным способом использования инструмента. Конструктор является новой функцией и значительно менее стабилен, чем сама Entity Framework.
  2. Существуют определенные функции Entity Framework, такие как сложные типы, которые вообще не поддерживаются в конструкторе.
  3. Некоторые сценарии сопоставления, такие как не сопоставление отдельных столбцов или сопоставление таблиц без отношения внешнего ключа, которые могут быть необходимы для устаревших баз данных, не поддерживаются в конструкторе.
  4. Как я упоминал в (1), конструктор немного ненадежен, чем сама Entity Framework. Так что в более крупных проектах вам, вероятно, придется убирать после ошибок дизайнера.
1 голос
/ 10 марта 2009

Entity Framework использует EDM для моделирования данных; это набор из 3 сложных файлов схемы (хранилище, концептуальное, отображение), которые обычно хранятся как ресурсы в проекте (через конструктор, который использует один файл EDMX для генерации всех 3 файлов схемы).

Он не поддерживает приписанные классы для этой информации. Единственный разумный способ написать EDM - через дизайнера (по сути, инструмент моделирования, который вам не нравится).

Повторно классифицирует «использование» более чем одной базовой таблицы; да, один объект Entity Framework на концептуальном уровне (т.е. классы) может охватывать несколько таблиц хранения. Это особенно полезно для некоторых примеров наследования, но может (IIRC) использоваться и для плоских моделей. Это делается с помощью «отображений» между хранилищем и концептуальными слоями (чаще всего на вкладке в конструкторе).

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