【发布时间】:2015-02-17 22:13:40
【问题描述】:
我正在使用实体框架在 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 设计器”)后,我的项目有 edmx 文件和一些新的 .cs 文件,但它似乎没有生成所需的一切。
例如,在我的 DatabaseEntities 类中,我有:
public virtual DbSet<Area> Areas { get; set; }
但是,“区域”类型(以及其他三种缺失类型)没有定义。我也缺少存储过程的功能。
我尝试删除新文件并重新运行模型向导,但结果相同。
还有其他人遇到过这种情况吗?
旁注:
我注意到在最近几次尝试中,当向导运行时我也遇到了错误:“实体框架包未安装在项目中”。但是,当我点击它时,它仍在生成 edmx 和 model.context。
我在 Entity Framework 6.0.0 和 6.1.2 版本中都遇到了同样的问题。
重新安装框架对问题没有影响。
更新:
卸载 nuget 并重新安装最新版本允许我通过 nuget 安装 EntityFramework 而不会出错。但是,现在“添加新项”对话框中缺少 ADO.NET 数据模型。
【问题讨论】:
-
如果您从现有数据库执行 CodeFirst,您将不会获得任意存储的 procs 或 tvfs,因为 CodeFirst 本身不支持它们。
-
对于存储过程,您可能需要添加下两行: SET FMTONLY OFF SET NOCOUNT ON 在对话框中,您可以创建复杂类型。建议再次删除 FMTONLY ON。对于表格,您可以显示表格定义吗?
-
@Pawel:我正在使用数据库中的 EF 设计器。
-
实际模型看起来好吗? Area 实体在里面吗?
-
@dudeNumber4:在 edmx 模型中,我在图表上看到了我的所有四个表。
标签: c# sql-server entity-framework ado.net-entity-data-model