问题标签 [entity-framework-6]
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.
c# - 如何以正确的方式取消异步查询
这是这个问题的后续问题。
我正在尝试从我的数据库加载数据,这将需要 5-10 秒,但我希望 GUI 保持响应,并且它应该是可取消的。
我已经尝试了一些事情,但我无法让它正常工作,这只是加载列表,仅此而已,我无法取消它。
这其中的错误在哪里?
c# - 属性类型更改时不更新鉴别器
我有一个具有抽象类型属性的实体。这将创建一个使用逐层表继承的一对一关系。一切似乎都正常工作。
我可以创建一个 Item 并将Base
属性设置为ConcreteOne
; 一切都正确保存。但是,当我尝试更新Base
到 时ConcreteTwo
,EFBase
使用新的用户值更新数据库中的记录,它不会更新类型的鉴别器。所以额外的数据ConcreteTwo
会被保留,但鉴别器仍然说ConcreteOne
.
下面是一个暴露问题的简单例子
保存更改后,EF 会生成以下 SQL:
所以这几乎是正确的,但我希望[Discriminator] = 'ConcreteTwo'
在更新声明中看到。我的期望是没有根据的还是我做错了什么?
作为测试,我尝试使用 table-per-type 并且该条目已从表中删除并按我的预期ConcreteOne
添加到表中。ConcreteTwo
所以它可以工作,但是我的实际应用程序至少有七个子类型,并且用于检索Base
属性的 SQL 语句变得非常讨厌。因此,如果可能的话,我当然希望使用 TPH 来完成此任务。
更新: 我已验证 EF5 和 EF6 中都存在问题。
c# - 如果我使用基类定义键,则会发生错误
如果我从基类使用它来定义DbGeography
键:对于此类:
大学类映射:
一切都是正确的,EntityFramework 正确,但是如果我将类更改为:
我收到以下错误:
在模型生成期间检测到一个或多个验证错误:
Data.DbGeography: : EntityType 'DbGeography' 没有定义键。定义此 EntityType 的键。DbGeographies:EntityType:EntitySet 'DbGeographies' 基于没有定义键的类型'DbGeography'。
!!!???谢谢
c# - .Where(i => !i.IsDeleted) 不会转换为 SQL,但 .Where(i => i.IsDeleted.Equals(false)) 会
我正在使用 ASP.NET MVC 4 和 Entity Framework 6(代码优先)并且有一些我不想要/不喜欢的奇怪行为:我有一个具有布尔属性
的实体类,现在我想获取前 25 个图像,没有被删除,所以我使用了以下代码:Images
IsDeleted
由于这非常慢,我进行了更深入的调查并发现,Where(i => !i.IsDeleted)
已经触发了数据库查询并且所有图像都已加载(并解析 => 慢),然后检查发生在“代码中”。然后我尝试Where(i => i.IsDeleted.Equals(false))
了哪个工作正常,并通过 SQL 进行检查。
为什么会这样,或者我怎样才能避免这个问题,因为我更喜欢第一种语法?
这可能是 EF 6 beta 的错误还是在所有 EF 版本中都会发生?
更新:
问题是转换为IEnumerable<Image>
(我Where
在我的代码中没有在同一行中做了,但为了简单起见在这里改变了它),但我也用它来做一个.OrderBy(...).ThenBy(...)
using Func<T, TKey>
-keys 并且它确实返回IOrderedEnumerable
而不是IOrderedQueryable
......
更新2:
通过使用Expression<Func<T, TKey>>
密钥解决...
c# - OrderBy(函数) 不能翻译成 SQL
我实现了提供给该方法的动态排序逻辑(请参见此处) 。Expression<Func<T, IComperable>>
OrderBy
现在我遇到了问题,EF 无法将IComperable
in转换Func<T, IComperable>
为其实际类型:
无法将类型“System.Int32”转换为类型“System.IComparable”。LINQ to Entities 仅支持转换 EDM 基元或枚举类型。
在
System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.ValidateAndAdjustCastTypes(TypeUsage toType,TypeUsage fromType,Type toClrType,Type fromClrType)
有没有办法解决这个问题?
我目前发现的唯一方法是将Func<>
's 作为它们的真实类型“实现”,将此类型保存在旁边Func<>
并调用OrderBy
via 反射:
但这对我来说似乎很丑陋(而且很慢?),并且不像当前的(遗憾的是仅适用于 LINQ to objects 工作)解决方案那样好用......
更新:
这个问题似乎只在返回int
或bool
在时发生Func<T, IComperable>
,因为它适用于string
...
c# - Entityframework RC1 - MetadataItem.Annotations 内部 - 替代品?
我一直在 EF Beta1 中使用以下方法来获取引用给定类型的 PropertyInfos 列表:
然而,在最近发布的 RC1(参见)中,System.Data.Entity.Core.Metadata.Edm.MetadataItem 的Annotations -Property 已被设置为内部。
我的快速解决方法是使用反射来访问内部属性,但我想知道是否有任何其他解决方案可以在没有反射黑客的情况下获取给定 NavigationProperty 的 PropertyInfo。
entity-framework - 阻止 webapi 从关联表返回所有数据
我有一个名为 MemberCompany 的表,其中记录了成员拥有的每家公司。模型如下。当我通过传入 memberid 的 webapi 方法查询它时,我可以在调试模式下看到它返回该成员的一个公司,但是当我在浏览器中运行它时,我可以看到它也返回整个成员列表。是否可以在没有两个引用表的情况下只返回成员公司记录的集合?我注释掉了包含这两个表的初始代码,但它们似乎仍然包含在响应中。
网络API
c# - 可能的 EF6 beta 1 迁移错误。Codefirst 迁移死锁
我的 EF 数据库被删除,我的模型有一些变化。我想重新创建我的数据库。但是 ef 给了我一些奇怪的信息。它说我首先应该将待处理的模型更改写入 Code-First 迁移,因为它无法更新数据库以匹配当前模型。但是,当我尝试将挂起的模型更改写入 Code-First 迁移时,它说我应该将挂起的迁移应用到数据库。
我也尝试了-Sript
选项,Update-Database
但它给了我相同的结果。
我应该怎么办?将我的待定更改还原到我的模型?
entity-framework - 无法从程序集“EntityFramework”加载类型“System.Data.Entity.DbSetExtensions”
从 entityframework 6.0.0-beta1 更新到 6.0.0-rc1 并且登录到我的 MVC5 应用程序时出现以下错误
我的 csproj 有以下参考资料
网络配置
这以前有效,我需要新版本的 System.Data.Entity.Design dll 吗?或更改 web.config 中的程序集版本?
entity-framework-6 - 将 Microsoft.AspNet.Identity 升级到 rc1 后找不到 IdentityStoreManager
将 Microsoft.AspNet.Identity.Core 升级到 1.0.0-rc1 后,由 Visual Studio 2013 中的默认 MVC5 模板生成的 AccountController.cs 和 AppModel.cs 类中出现了几个错误。
是否有任何发行说明来解释如何解决重大更改?