asp.net - 为什么 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。
解决方案
在 VS 对象浏览器中进行一些探索后,事实证明,实体(部分)类的生成 EF 部分由于某种原因显然没有“合并”到我在单独文件中创建的(部分)类的其余部分. 对象浏览器在每个实体的层次结构中显示了两个不同的类。删除项目的根命名空间解决了这个问题,尽管我不清楚为什么会这样。
推荐阅读
- c - 在 ARM 上的 Linux 中写入物理地址
- .htaccess - HTTPS SEO 和 Canonical
- javascript - 无法在 chart.js 时间轴上显示正确的时间
- mysql - 如何使用 ReactPHP 监控 Mysql 表的变化
- c# - 如何将网络接口添加到组合框并根据选定的接口解析 ip?
- c# - 如何从另一个应用程序向机器人发送消息
- php - 使用 PHP MVC 将 JQuery 添加到我的脚本标签时如何修复无限循环
- html - 如何创建一个水平滚动容器时将固定的 div,而不会垂直溢出容器?
- java - 提示用户从数组中选择元素以获取用户信息
- java - JPA 通用存储库,不适用于某个名称