【问题标题】:On ADO.NET entity framework, the DbContext object does not have a table field在 ADO.NET 实体框架上,DbContext 对象没有表字段
【发布时间】:2017-09-04 20:32:59
【问题描述】:

我正在使用 VS 2015 Community、Windows 10、Microsoft SQL 2016 SP1。 我在项目中添加了一个 SQL Server 数据库。然后我在该数据库中添加了一个名为“Dict”的表。

我正在关注this tutorial (at 20:00),它解释了如何将 ADO.NET 与 Visual Studio 一起使用。该视频有点过时,但我按照相同的步骤创建实体模型。但是当我到达 21:01 的部分时,当我尝试访问 context.Dict 时,我的 DbContext 对象(见下文)返回错误。它说没有找到字典的定义。

    public partial class _Default : Page
      {
         protected void Page_Load(object sender, EventArgs e)
         {
            var context = new DictServerEntities1();

            var words = context.Dict;

更新:

我导入了一些 Microsoft 提供的示例数据库(称为 Northwind),它们与 EF 一起使用。所以我的表在某种程度上对 EF 无效,我猜是因为它不包含主键。

【问题讨论】:

  • 刚刚发现VS 2015上不再使用SQL Server Compact,所以视频已经过时了。显然现在使用 LocalDB。删除关于创建本地数据库的问题。
  • 您在 .edmx 模型中看到 Dict 了吗?是不是没有按照 18:13 的说明检查要生成的表?
  • 不,但我确实检查了表格。
  • 我没有 VS2015,但在保存 .edmx 后,它应该会生成模型和代码(见 18:54)。对我来说,它在 VS2017 中立即起作用。由于上下文已生成,您可能在创建表之前生成了模型。是否出现消息“运行此文本模板可能会损害您的计算机...”并且脚本是否已执行?点击 OK 后,检查 VS 输出窗口的详细信息。
  • 我记得出现了文本模板窗口,但我总是在模型之前有表格。输出显示“无法将 XML 保存到配置文件 Web.config”,因为另一个进程正在使用它...

标签: c# sql-server visual-studio entity-framework


【解决方案1】:

对此的答案是使用带有主键的表。我没有使用主键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2017-05-14
    相关资源
    最近更新 更多