首页 > 解决方案 > 为什么 VS2019 / VB.Net /EF 6 要求我的进口量加倍?

问题描述

经过多年的裁员后,我试图恢复我最初使用 VSEW 2012 在 VB.NET Web 窗体中针对 .NET 4.5.1 和 EF 5.0 开发的应用程序。该应用程序使用 VS2019 和 .NET 4.7.2 很好地重新编译,直到我开始尝试“现代化”事物,然后一切都崩溃了。当我升级到 EF 6 时,出现了数百条与实体相关的“未定义”消息。啊,我看到 EF5 -> EF6 并不是那么无缝。

因此,为了帮助确定发生了什么,我返回并创建了一个新的简单 Web 窗体应用程序,并从我现有的数据库中生成了一个 EF 6.2 模型。一切都很好 - 但是要使用我的实体容器(在下面的 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 配置,a) 它不需要以这种方式检查/导入根命名空间,b) 甚至没有显示要导入的“加倍”选项。所以,我仍然不清楚为什么 a)我需要在项目配置中导入命名空间(自 VS2012 以来在这方面发生了一些变化?),并且 b)需要导入 TestWebApp1.TestWebApp1 而不仅仅是 TestWebApp1。

标签: asp.netvb.netvisual-studioentity-frameworkwebforms

解决方案


在 VS 对象浏览器中进行一些探索后,事实证明,实体(部分)类的生成 EF 部分由于某种原因显然没有“合并”到我在单独文件中创建的(部分)类的其余部分. 对象浏览器在每个实体的层次结构中显示了两个不同的类。删除项目的根命名空间解决了这个问题,尽管我不清楚为什么会这样。


推荐阅读