问题标签 [ef-database-first]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
790 浏览

asp.net - 如何让我的模型和数据库重新同步 Asp.net MVC

我使用数据库优先方法在 Asp.Net MVC 中创建了一个应用程序。我使用 edmx 文件生成了我的模型。但是我对我的上下文类进行了更改。每次我运行我的

应用程序我收到以下错误:

“支持 'ArticleContext' 上下文的模型在创建数据库后发生了变化。考虑使用 Code First 迁移来更新数据库”

我应该遵循错误给我的建议吗?即使我使用了“数据库优先”方法?

0 投票
2 回答
1845 浏览

asp.net-mvc-4 - MVC4如何在没有导航属性的情况下加载相关数据

我是 MVC 的新手,并且使用 EF-database-first 创建了一个 MVC4 应用程序。数据库不包含外键定义,我无法添加它们(我不拥有数据库)。以下是数据库中的两个示例类:

默认分配索引页面显示部门 ID。我想显示部门名称。如果没有导航属性,我怎么能做到这一点?

我试过

但这会产生错误(“指定的包含路径无效。EntityType 'TESTModel.Allocation' 未声明名为 'DeptID' 的导航属性。”)...

我也不确定如何在没有导航属性的情况下编写预先加载或显式加载的代码,这引发了这个问题。效率方面,我认为加载相关信息的方式并不重要,因此我们将不胜感激任何方向的帮助。

0 投票
0 回答
289 浏览

c# - 使用 EntityObject Generator 模板引用外部枚举类型

我有以下枚举:

我在 EF 设计器中创建了一个引用枚举类型,其名称VehicleType引用 Common.VehicleType。edmx 在Models命名空间中,所以我最终得到了两个不同的枚举:

要在实体对象实例上设置枚举,我需要对其进行强制转换:

这有几个问题:

  1. 我需要使用完全限定的名称(枚举的名称必须与我收集的名称相同)。
  2. 我需要到处投。
  3. 我将得到一个循环引用,因为Models命名空间引用Common并且Common现在需要引用Models才能进行转换。

这是一个简化的解释。我无法更改引用或生成器模板,因为这将在一个相当大的项目中进行大量代码更改。

我猜它的生成模板搞砸了。有没有办法解决这个问题?

编辑

EntityObject 模板生成器生成的 VehicleType 类型的字段变为:

其中 VehicleType 是 Models.VehicleType

0 投票
1 回答
485 浏览

asp.net-mvc-4 - 带有复合键的 MVC4 导航属性

我使用 EF-database-first 创建了一个 MVC4 Web 应用程序。这些表具有复合键 [ID、Name、EffDate],并且没有在数据库中定义外键:例如,Department 部分类:

部门元数据类:

分配表,指的是部门表。它还有一个复合键 [DeptID, ProjectID, BillableUnitID, EffDate]。如果可以的话,我会将 DeptID 字段声明为外键......但我不控制数据库,更重要的是我相信 T-SQL 不会允许外键成为复合键的一部分:

这可行,但我得到一列 DeptID 编号。我想要的是一列部门名称。

上一个问题将我引导到虚拟导航属性,所以我添加了它们:

AllocationController 中 Index 的代码是: public ActionResult Index() { return View(db.Allocation.Include(a => a.Department).ToList()); }

当我单击分配索引视图的链接时,我收到此错误消息(在我停止调试之后):

“/”应用程序中的服务器错误。

指定的包含路径无效。EntityType 'KC_BillableUnit_TESTModel.Allocation' 未声明名为“Department”的导航属性。

堆栈跟踪 [InvalidOperationException:指定的包含路径无效。EntityType 'KC_BillableUnit_TESTModel.Allocation' 未声明名为 'Department' 的导航属性。]
System.Data.Objects.Internal.ObjectFullSpanRewriter.ConvertSpanPath(SpanPathInfo parentInfo, List`1 navPropNames, Int32 pos) +8355128
System.Data。 Objects.Internal.ObjectFullSpanRewriter..ctor(DbCommandTree 树,DbExpression toRewrite,Span span)+256 ....继续....

我尝试了各种注释组合,但都导致相同的错误。

如何让我的分配列表显示部门名称而不是 DeptID 编号?

0 投票
1 回答
2254 浏览

asp.net-mvc - 如何使用 EF 数据库优先实现继承

我有这个简单的课程:

现在我想实现一个SpecialMovie... ,它有一个名为Special.

我正在使用数据库优先的方法。

我试图找到一些教程,但没有什么真正有用的。

我有一本 SQL Server 2008 书,它没有提到继承……继承在 SQL 中不是很重要吗?有点奇怪,它没有继承任何东西......

0 投票
1 回答
655 浏览

.net - 实体框架模型优先导航属性约定

我正在使用带有 edmx 文件的模型优先实体框架,该文件已从现有数据库“逆向工程”。

在大多数情况下,实体和导航属性已根据我的约定自动检测到,但缺少一些导航属性 - 例如:

目前Works.EditorUserID是 的外键Users.UserID,但 Entity Framework 不会自动Editor在生成的对象上包含导航属性。

我可以在我的数据库上使用更好的命名约定来允许这种情况发生吗?

谢谢

更新: 我刚刚意识到实际上正在创建导航属性,但它的名称不是很有用 - 它正在创建一个名为User而不是Editor.

0 投票
1 回答
792 浏览

entity-framework - Entity Framework 需要哪些权限才能从数据库生成模型?

我正在连接到第三方 SQL Anywhere 实例,并且在从现有数据库生成实体数据模型时遇到问题。该连接使用基本的 ODBC 连接,但在生成模型时遇到“权限被拒绝:您无权从“sysuserperm”中选择错误。我的问题是我应该要求添加什么权限这个帐户,所以我可以生成模型?

完整的错误消息如下:在此处输入图像描述

0 投票
1 回答
1409 浏览

entity-framework - 关闭导航属性

使用 VS 2012、Entity Framework 5 和 SQL Server Express 2012。

我有一个 SQL Server 数据库来为应用程序提供服务Web API;因为它主要用于移动设备,所以我想最小化数据传输,所以我想禁用导航属性。我已将ProxyCreationEnabledand设置LazyLoadingEnabled为 false,这意味着相关数据不会被序列化,这有很大帮助,但它们仍然在调用返回的数据中显示为空数组,这意味着我必须在调用Web API中以某种方式处理它们AJAX.

有什么方法可以完全关闭它们吗?

0 投票
1 回答
308 浏览

.net - 具有数据库优先模型的实体框架

我正在使用带有数据注释的 EF 4.1 在 ASP.NET MVC 中进行开发。客户端验证按预期工作。但我有这个疑问。例如,当必填字段(例如:产品名称)从客户端到服务器变为 null 并且实体模型抛出异常时。我该如何处理这种情况?

一些附加信息是,我通过 WCF 服务层使用 EF

0 投票
1 回答
573 浏览

entity-framework - EF db first 和 table 没有 key

我正在尝试首先使用 Entity Framework DB 为大型数据库的报告网站进行快速原型设计。问题是其中一张桌子没有钥匙。我收到“错误 159:EntityType 没有定义键”。如果我在模型设计器上添加一个键,我会得到“错误 3024:必须为所有键属性指定映射”。我的问题是是否有一种方法可以在不向表中添加密钥的情况下解决此问题。这张桌子不在我们的控制范围内。