entity framework不为表或过程生成类

我正在使用Entity Framework在C#中生成类和函数,我需要与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’)后,我的项目有edmx文件和一些新的.cs文件,但似乎它没有生成它需要的一切。

例如,在我的DatabaseEntities类中,我得到了:

  public virtual DbSet Areas { get; set; } 

但是,没有“区域”类型的定义(以及其他三种缺失类型)。 我也缺少存储过程的function。

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

有没有其他人遇到这个?

图片的标题说明:

我注意到在最后几次尝试中,当向导运行时我也收到错误:“未在项目上安装Entity Framework包”。 但是,当我点击它时,它仍然生成edmx和model.context。

我对Entity Framework版本6.0.0和6.1.2都有同样的问题。

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

更新:

卸载nuget并重新安装最新版本允许我通过nuget安装EntityFramework而不会出错。 但是,现在Add New Item对话框中缺少ADO.NET数据模型。

我所做的工作涉及几个步骤,我必须对在问题下面发表评论的人给予一定的评价。

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

2)我不确定这是否有帮助,但我也通过微软的网站重新安装了Visual Studio的entity framework工具。 我仍然不确定是否有必要同时拥有两者。

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

完成后,我能够运行EF Designer,并且生成的所有内容都没有问题。

确保列名不是数据类型或关键字等保留字; 我今天遇到了一个问题,试图导入一个有一个人简单地称为“DATE”的列的表,这显然是一种数据类型,而且这种情况很糟糕。 当我在SQL中创建一个视图并使用无保留名称别名化该列时,该表导入得很好并生成了所有必需的类。

我个人强烈建议采用Code-First方法,而不是设计师。 因为设计师只是麻烦!!!

代码优先教程

从Code First调用存储过程