Entity Framework 不为表或过程生成 类

Entity Framework Not Generating Classes for Tables or Procedures

我正在使用 Entity Framework 在 C# 中生成 classes 和函数我需要与 SQL 服务器交互。

作为参考,这是我的一张表:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Area](
    [ID] [bigint] identity (1, 1) primary key,
    [Name] [nvarchar](100) NOT NULL
    )
GO

在 运行 实体数据模型向导(使用 'EF Designer from database')之后,我的项目有 edmx 文件和一些新的 .cs 文件,但它似乎没有生成它需要的一切.

例如,在我的 DatabaseEntities class 中,我有:

    public virtual DbSet<Area> Areas { get; set; }

但是,没有类型 'Area' 的定义(以及其他三个缺失的类型)。我还缺少存储过程的功能。

我尝试删除新文件并重新运行模型向导,但我得到了相同的结果。

还有其他人 运行 参与其中吗?

旁注:

我注意到在最近几次尝试中,当向导 运行s: "The Entity Framework package not installed on project" 时我也遇到了错误。但是,当我点击过去时,它仍在生成 edmx 和 model.context。

我在 Entity Framework 版本 6.0.0 和 6.1.2 上遇到了同样的问题。

重新安装框架对问题没有影响。

更新:

卸载 nuget 并重新安装最新版本使我能够通过 nuget 安装 EntityFramework 而没有错误。但是,现在添加新项目对话框中缺少 ADO.NET 数据模型。

我所做的涉及几个步骤,我必须感谢在问题下方发表评论的人。

1) 我卸载了 nuget 包管理器并重新安装了最新版本(显然我的不新鲜)。这允许我通过 nugget 安装 EntityFramework,没有错误或回滚消息。

2) 我不确定这是否有帮助,但我还通过 Microsoft 的网站为 Visual Studio 重新安装了 Entity Framework 工具。我仍然不确定是否有必要同时拥有两者。

3) 添加新项对话框中似乎缺少 ADO.NET 实体数据模型模板。选择 "Add -> Component" 而不是 "Add -> New Item" 后,它神秘地出现在两个列表下。

一旦完成,我就可以 运行 EF Designer 和生成的所有内容都没有问题。

确保您的列名不是保留字,例如数据类型或关键字;我今天在尝试导入一个 table 时遇到了一个问题,该 table 包含一个有人简单地称为 "DATE" 的列,这显然是一种数据类型,这让 EF 变得很糟糕。当我在 SQL 中创建视图并使用未保留的名称为该列添加别名时,table 导入得很好并生成了所有必需的 类.

确保 table 有一个键列。如果 table.

中没有键列,则不会生成视图