问题标签 [entity-framework-5]

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 回答
917 浏览

asp.net-mvc - 带有 EF5rc 模型的 MVC 在单独的项目中?

我正在努力加快 EF5 和 MVC 的速度,所以请多多包涵。在 DB 优先环境中使用 EF 5rc 和 MVC4。

我想将 EF 代码放在一个单独的项目中,以便我可以使其可重用于其他项目。

我正在寻找的是如何将 EF 项目中的单独 DLL 用于 MVC 项目的模型部分的示例或示例。

我对如何在 RF 项目或 MVC 项目中创建上下文感到困惑?

任何其他提示将不胜感激。

0 投票
2 回答
1589 浏览

visual-studio-2010 - 带有实体框架 5/Visual Studio 2010 的 EDMX 中的表值函数

是否可以在带有 Entity Framework 5 RC / Visual Studio 2010 的 EDMX 中使用表值函数?

我在 EDMX 设计器中看不到该选项,我感觉设计器在 .net 4.5 中?我的怀疑正确吗?或者也许在 Visual Studio 11 中?

我还不能将我们的项目升级到 .net 4.5,还有另一种使用表值函数的方法(也许手动修改 edmx?)。

附加信息:

msdn 上的这篇博文有助于确认不兼容性:

某些功能仅在编写面向 .NET 4.5 的应用程序时可用。这包括枚举支持、空间数据类型、表值函数和性能改进。如果您的目标是 .NET 4.0,您仍然可以获得所有错误修复和其他小的改进。

然而有趣的是,本教程讨论了直接修改 EDMX 以添加对 TVF 的支持,但它似乎是针对旧的测试版。XML 智能感知也没有找到教程中讨论的元素,但这可能是因为它使用了不同的模式。不幸的是,我已经没有时间尝试将本教程应用于新的 EF5 候选版本,但我很想知道是否有人运气好。

0 投票
1 回答
1764 浏览

c# - 即使列允许 null,也无法插入值 NULL

我正在使用 Asp.Net MVC 4 中的 Entity Framework 测试脚手架(通过遵循本文)。我让它工作正常,除了即使我的域对象在字段中允许 null 并且数据库字段允许 null 我收到错误消息:

无法将值 NULL 插入列“IsSuccessful”、表“MyTestProject.Persistence.TestContext.dbo.Prediction”;列不允许空值。更新失败。该语句已终止。

我的域对象如下所示:

生成的网页将 IsSuccessful 显示为带有 NotSet、True 和 False 选项的下拉框。在数据库中,IsSuccessful 列允许为空。我仍然收到错误消息。如果我选择 True 或 False(它已正确保存在数据库中),一切正常,但当我选择 NotSet 时则不行。

肯定有办法解决这个问题吗?

一些细节:

  • 视觉工作室 2012 RC
  • ASP.NET MVC 4
  • EntityFramework.dll 版本 5.0.0.0
0 投票
1 回答
327 浏览

.net - Entity Framework DbContext:每次都配置实体?

我想知道 Entity Framework 是否System.Data.Entity.DbContext在每次实例化时都被配置。

为什么我会得到这个问题?

例如,如果您正在执行手动映射覆盖DbContext.OnModelCreating(...)方法,似乎每次DbContext实例化 a 时都会调用它。

实体框架是否执行某种配置缓存或其他什么?

0 投票
1 回答
278 浏览

entity-framework - 对独立关联的实体框架查询会创建过于复杂的查询?

我首先使用 EF5 和代码创建一个项目。

在我的对象设计中,我在这种情况下使用了“独立关联” ,属性“FarmWhereCowLives”是一个“独立关联”

然而,当我去运行一个查询时,要求实体框架通过传入农场 ID 来为特定农场选择最新的奶牛......例如:

(我使用通用存储库以防万一,但我不这么认为)

执行的 sql(我可以在 SQL profiler 中看到)似乎过于复杂?

例如

问题是:

  1. 嵌套选择是怎么回事?
  2. 为什么 EF 没有编写更高效的查询?例如没有嵌套选择?
  3. 我应该为牛对象添加外键关联吗?我不应该这样做来让 EF 执行编写良好的查询,对吗?

也许我在这里做错了什么?

干杯安德鲁

0 投票
1 回答
134 浏览

entity-framework - SaveChanges 查询生成性能

保存大量记录时,即使记录属于同一类型,SaveChanges 似乎也很慢。下图显示了尝试保存约 60000 条记录的分析会话,这些记录属于混合类型,但其中许多共享相同类型。我的期望是 SaveChanges 调用的 CreateDbCommandDefinition 将为每个记录类型调用一次,令人惊讶的是它是为每个记录单独调用的。这当然会导致性能不佳。

我用 EF 4.3.1 和 5.0 都检查了这一点,结果相同。无论如何配置EF,它不会为数据库中插入/更新的每条记录创建一个命令?

0 投票
1 回答
1511 浏览

c# - 实体框架:以 json 格式存储实体属性

假设您有一个属性类型为 as 的实体,ICollection<string>我想将其存储为varcharJSON 格式的 SQL Server。

如何做到这一点?

先感谢您。

0 投票
1 回答
529 浏览

serialization - 如何反序列化来自 ApiController 的数据

我有一些 POCO 对象设置为与 Entity Framework Code First 一起使用。

我想从我的 ASP.NET MVC 4 网站中的 ApiController 返回其中一个对象,然后在客户端应用程序中使用它。

我最初在服务器端对对象的序列化有问题,因为实体框架妨碍了(请参阅Can an ApiController return an object with a collection of other objects?),它试图序列化 EF 代理对象而不是普通的 POCO 对象。所以,我在我的 DbContext 中关闭了代理生成以避免这种情况 - 现在我的序列化对象看起来不错(在我看来)。

有问题的对象是“标签”——这是我的 POCO 类:

相当标准的东西,但请注意 ClientId 和 Client 成员。这些是 EF Code First“导航”属性。(每个标签只属于一个客户)。

这是我从我的 ApiController 中得到的:

Client 成员为零,因为禁用了代理生成,我没有自动加载引用的对象。这很好,在这种情况下 - 我不需要客户端的数据。

所以现在我试图在客户端反序列化这些对象。我曾希望我能够在客户端应用程序中重用相同的 POCO 类,而不是创建新类。干燥等等。所以,我正在尝试:

但是我遇到了两个问题,这两个问题都是由于 EF Code First 约定:

问题 1:因为我的 Tag 类有一个 Client 成员,所以 XmlSerializer 抱怨它不知道如何反序列化它。我想这很公平(尽管我曾希望因为 XML 中的成员是 Nil,所以它不会在意)。我可以在 XmlSerializer 构造函数中传递额外的类型,当我尝试这样做时,它会抱怨 Client 使用的其他类。由于 Client 引用了各种其他对象,我最终不得不将它们全部传入!

我尝试使用 [DataContract] 和 [DataMember] 属性从 XML 中删除 Client 成员(通过不将其标记为 DataMember)。这确实将它从 XML 中删除,但并没有阻止 XmlSerializer 抱怨它。所以我想问题不是在 XML 中,而是在类定义中。

问题 2:当我尝试将 typeof(Client) 作为额外类型传入时,它还抱怨它无法反序列化该类,因为它包含一个接口成员。那是因为 - 再次由于 EF Code First 约定 - 它有一个 Tags 成员,如下所示:

所以看起来即使我解决了引用类型的问题,我仍然无法使用我的 POCO 类。

Is there a solution to this, or do I have to create new DTO classes purely for use at the client side, and return those from my ApiController?

0 投票
2 回答
2544 浏览

c# - 将 EF 代理对象转换为原始 POCO 对象的最佳方法是什么?

我有一些在 EF Code First 上下文中使用的 POCO 对象。因此,当我用数据填充它们时,我实际上是在处理 EF 代理对象而不是 POCO 本身。

我有一个 ASP.NET MVC4 ApiController,它返回我的 POCO 对象,我将在我的客户端应用程序中使用这些对象。

我的“GET”方法看起来像这样:

这实际上不起作用,因为当序列化程序尝试序列化 Client 对象时,它实际上是在处理 EF 代理版本,这会导致它打嗝。请参阅ApiController 可以返回带有其他对象集合的对象吗?

所以,我可以通过这样做来关闭代理生成DbContext

这确保我正在处理 POCO 而不是代理。但是,现在我的 Client 类的大多数成员都没有填充,因为是 EF 代理为我延迟加载这些成员。

所以我真正想要的是使用 EF 代理类来获取数据,然后在最后一刻从我的方法中返回原始 POCO。

如果不在代码中从头开始手动创建整个对象(包括任何嵌套对象),我该如何做到这一点?当然必须有一个简单的方法 - 或者至少是某种帮助类?

0 投票
1 回答
9918 浏览

ef-code-first - EF5 Code First中的多对多关系,如何指定表名?

我对 EF 很陌生,我不确定该怎么做。

我有一个多对多的关系,就像这样:

在此处输入图像描述

当我尝试将资源 (Recurso) 添加到配置文件 (Perfil) 时,我收到以下错误:

Invalid object name 'dbo.RecursoPerfils

到底是RecursoPerfils从哪里来的?

如何指定(最好通过属性注释)此关系的表名?

请参阅以下型号: