实体框架不为表或过程生成类

问题描述 投票:7回答:4

我正在使用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<Area> Areas { get; set; }

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

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

有没有其他人遇到这个?

图片的标题说明:

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

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

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

更新:

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

c# sql-server entity-framework ado.net-entity-data-model
4个回答
2
投票

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

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

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

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

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


1
投票

确保该表具有键列。如果表中没有键列,则不会生成视图。


0
投票

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


-3
投票

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

Code First Tutorial

Calling Stored Procedures from Code First

© www.soinside.com 2019 - 2024. All rights reserved.