Почему VS2019 / VB.Net / EF 6 требует удвоения моего импорта? - PullRequest
0 голосов
/ 12 июня 2019

После многолетнего увольнения я пытаюсь восстановить приложение, над которым я первоначально работал, используя VSEW 2012 в VB.NET Web Forms против .NET 4.5.1 и EF 5.0. Приложение прекрасно перекомпилировалось с использованием VS2019 и .NET 4.7.2, пока я не начал пытаться «модернизировать» вещи, а затем все чертовски свободно. Когда я обновился до EF 6, сообщения о сущностях "не определены" появились сотнями. Ах, я вижу, что EF5 -> EF6 не такой уж цельный.

Итак, чтобы помочь определить, что происходит, я вернулся и создал новое простое приложение Web Forms и сгенерировал модель EF 6.2 из моей существующей базы данных. Все хорошо, но чтобы использовать мой Entity Container (ниже, AlphaEntities), я должен «удвоить» корневое пространство имен для проекта в операторе Imports. Никогда раньше не делал ничего подобного.

Полагаю, я просто ржавый, но чего мне не хватает? Я думаю, что ответ на это простое приложение поможет мне определить, что нужно исправить в моем "реальном" приложении.

Imports TestWebApp1.TestWebApp1 '<=== Note Root Namespace Doubled Up

Public Class _Default
    Inherits Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

    Using dbc As New AlphaEntities
            testLabel.Text = dbc.Customers.First.Name.ToString
    End Using

    End Sub
End Class

РЕДАКТИРОВАТЬ: После ночного сна, я нашел часть диалогового окна конфигурации проекта, которая устанавливает импортированные пространства имен (которые не были сразу видны, учитывая, как устроены мои окна VS) и выбрал «удвоенное» пространство имен TestWebApp1.TestWebApp1 , Теперь ссылка на контейнер сущностей корректно компилируется без явной ссылки Imports. Поэтому я проверил мою старую конфигурацию VSEW 2012 на другом ноутбуке и а) она не требовала, чтобы корневая область имен проверялась / импортировалась таким образом, и б) даже не отображалась опция «удвоение» для импорта. Итак, мне все еще непонятно, почему а) мне нужно было вообще импортировать пространство имен в конфигурации проекта (что-то изменилось в этом отношении после VS2012?), И б) нужно импортировать TestWebApp1.TestWebApp1, а не только TestWebApp1.

1 Ответ

0 голосов
/ 20 июня 2019

После некоторого исследования в VS Object Browser оказалось, что сгенерированная часть EF классов сущностей (частичных) по какой-то причине явно не «сливается» с остальной частью (частичных) классов, которые я создавал.в отдельных файлах.Обозреватель объектов показал два разных класса в иерархии для каждого объекта.Удаление корневого пространства имен проекта решило эту проблему, хотя мне непонятно, почему это так.

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