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



我正在使用实体框架生成C#中需要与SQL server交互的类和函数。

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

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设计器")后,我的项目有了edmx文件和一些新的.cs文件,但它似乎没有生成所需的一切。

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

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

但是,类型"Area"(以及其他三种缺失的类型)没有定义。我还缺少存储过程的函数。

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

有其他人碰到过这个吗?

侧面注意事项:

我注意到,在最近几次尝试中,当向导运行时,我也遇到了一个错误:"项目上没有安装实体框架包"。然而,当我点击它时,它仍然在生成edmx和model.conf。

我在实体框架6.0.0和6.1.2版本中都遇到过同样的问题。

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

更新:

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

确保表中有一个键列。如果表中没有键列,它将不会生成视图。

我也面临着这个问题,没有生成类文件,现在发现这是visualstudio的一个bug。我和另一个旧版本的视觉工作室做了同样准确的项目,并进行了工作,它产生了所有的东西。删除visual studio并重新安装可以解决或使用以前的版本。在我的情况下,17.6.2不起作用,17.3.5起作用(visual studio 2022)

我所做的工作涉及到几个步骤,我必须赞扬在问题下面发表评论的人。

1) 我卸载了nuget软件包管理器并重新安装了最新版本(显然我的不是新版本)。这使我能够通过金块安装EntityFramework,而不会出现错误或回滚消息。

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

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

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

请确保您的列名不是保留字,如数据类型或关键字;今天,我在导入一个表时遇到了一个问题,有人只是简单地称之为"DATE",这显然是一个数据类型,这把EF搞砸了。当我在SQL中创建一个视图,并用一个未保留的名称对列进行别名时,表导入得很好,并生成了所有必需的类。

相关内容

最新更新