none
Переход от ObjectContext к DbContext RRS feed

  • Вопрос

  • Всем доброго времени суток!

    В свете этого обсуждения выяснилось, что стандартный мигратор студии не работает с моделью, созданной еще в 2010 студии, которая наследуется от ObjectContext

    public partial class CompanyContext : ObjectContext

    Необходимо, чтобы CompanyContext наследовался от DbContext. В связи с этим несколько вопросов:

    1. Как переделать существующий CompanyContext:ObjectContext в CompanyContext:DbContext

    2. Что дает использование DbContext вместо ObjectContext, или по-другому говоря, что в дальнейшем использовать предпочтительнее?

    P.S. В проекте используется .Net Framework 4.0

    11 апреля 2013 г. 5:01

Ответы

  • Нормальных инструментов для переноса нет. Делайте вручную, это не составит труда. Если база уже есть, она должна быть, то сгенерируйте новую модель edmx в Visual Studio 2012 и всё.

    "Что дает использование DbContext вместо ObjectContext, или по-другому говоря, что в дальнейшем использовать предпочтительнее?" - DbContext.

    • Помечено в качестве ответа Varlamov Oleg 12 апреля 2013 г. 7:52
    11 апреля 2013 г. 6:50
    Модератор
  • У меня была ORM Entity Framework только видимо не Code First, а Model First. Далее, по найденному в интернете мануалу, используя в модели "Add Code Genaration Item..." добавил "EF 4.x DbContext Generator". Он мне сгенерировал нужный DbContext и DbSet'ы. Однако сам файл *.edmx и моделька остались.

    Теперь, если я правильно понимаю требование мигратора - мне нужно удалить и модельку *.edmx, и оставить только класс DbContext?

    Получается с Code First я не смогу визуально просмотреть структуру?

    • Помечено в качестве ответа Varlamov Oleg 12 апреля 2013 г. 7:52
    11 апреля 2013 г. 7:56
  • "Получается с Code First я не смогу визуально просмотреть структуру?" - да, именно так.
    • Помечено в качестве ответа Varlamov Oleg 12 апреля 2013 г. 7:51
    12 апреля 2013 г. 6:13
    Модератор

Все ответы

  • Нормальных инструментов для переноса нет. Делайте вручную, это не составит труда. Если база уже есть, она должна быть, то сгенерируйте новую модель edmx в Visual Studio 2012 и всё.

    "Что дает использование DbContext вместо ObjectContext, или по-другому говоря, что в дальнейшем использовать предпочтительнее?" - DbContext.

    • Помечено в качестве ответа Varlamov Oleg 12 апреля 2013 г. 7:52
    11 апреля 2013 г. 6:50
    Модератор
  • Ясно. Спасибо за совет.

    Итак, модель я перевел на DbContext, однако мигратор говорит:

    Creating a DbModelBuilder or writing the EDMX from a DbContext created using Database First or Model First is not supported. EDMX can only be obtained from a Code First DbContext created without using an existing DbCompiledModel.

    В чем может быть проблема? Ведь я генерировал модель не с базы.

    11 апреля 2013 г. 7:28
  • Давайте подробней. У вас в VS2010 была ORM Entity Framework Database First с файлом EDMX. Теперь вам нужно это перенести в VS2012 оставив подход Database First? Или вам нужно использовать уже Code First, т.е. без EDMX ?
    11 апреля 2013 г. 7:35
    Модератор
  • У меня была ORM Entity Framework только видимо не Code First, а Model First. Далее, по найденному в интернете мануалу, используя в модели "Add Code Genaration Item..." добавил "EF 4.x DbContext Generator". Он мне сгенерировал нужный DbContext и DbSet'ы. Однако сам файл *.edmx и моделька остались.

    Теперь, если я правильно понимаю требование мигратора - мне нужно удалить и модельку *.edmx, и оставить только класс DbContext?

    Получается с Code First я не смогу визуально просмотреть структуру?

    • Помечено в качестве ответа Varlamov Oleg 12 апреля 2013 г. 7:52
    11 апреля 2013 г. 7:56
  • Олег, вы можете удалить EDMX модельку. Добавить новую, указав из какой базы вы ее хотите создать:

    11 апреля 2013 г. 9:02
    Отвечающий
  • Согласен, я могу создать новую модельку с полученной базы данных. Однако, если я буду менять таблицы через эту модельку, то это уже будет подход Model First, который, к сожалению, не поддерживается мигратором.
    12 апреля 2013 г. 4:02
  • "Получается с Code First я не смогу визуально просмотреть структуру?" - да, именно так.
    • Помечено в качестве ответа Varlamov Oleg 12 апреля 2013 г. 7:51
    12 апреля 2013 г. 6:13
    Модератор