问题标签 [entitycollection]

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

sorting - 对 EF4 EntityCollection 进行排序的最简单方法是什么?

我想为绑定到 ItemsControl(在 xaml 中)的 EntityCollection 添加一些排序。我也想尽可能简单地做到这一点。看来这是不可能的。

如果我将集合包装在实体内集合属性的“排序”版本中,我会丢失集合更改通知。我不能使用 CollectionViewSource 因为实体集合的 BindingListCollectionView 不支持排序,因为某些该死的原因(注意:我已经看到博客文章用“脏”黑客来解决这个问题,所以请不要用那个 kthx 回答)。

有没有一种简单的(几行xaml,几行代码,等等)方法来实现这一点?

0 投票
1 回答
3770 浏览

silverlight - 使用 RIA 将实体插入 EntityCollection

我已经建立了一对多的关系。(例如,一个拥有许多电话号码的人)。在我的 get 查询中this.ObjectContext.Person.Include("PhoneNumbers"),在生成的元数据中,包括public EntityCollection<PhoneNumbers> PhoneNumbers{ get; set; }我还设置了一个具有此属性和我需要的其他属性的 DTO。

我可以很好地检索所有数据,并在 Silverlight 中显示它,但是当我创建一个新数据时,我遇到了问题。我有这样的事情发生:

然后我在调用时收到此错误TDataSource.SubmitChanges();

Message = "提交操作验证失败。请检查 EntitiesInError 中每个实体的 Entity.ValidationErrors 以获取更多信息。"

好吧,所以我这样做了,果然有一个错误,但我不太明白为什么会有。我在数据库中有一个不可为空的字段用于 last_modified_by 字段,我在创建它并将它添加到 entityCollection 时没有设置它,我想这会导致它,但我的问题来自为什么 RIA 不在我创建的服务中调用我的 Insert 方法,因为我想在那里设置该字段。像这样:

但这就像 RIA 添加我的对象并调用它自己的插入方法。所以我一开始就使用它,只是在 UI 中设置属性,然后它会给我这个错误:

Message = “提交操作失败。更新条目时出错。有关详细信息,请参阅内部异常。内部异常消息:当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'iset_trkr_writeback' 中插入标识列的显式值。”

我从来没有将身份字段设置为任何东西,我认为 RIA 会为我做这件事。但是当我调试并查看时,它的值为 0。但至少这一次它在我的服务中调用了我的插入方法......也许我的过程缺少了一些重要的东西,但我真的可以使用一些帮助。谢谢:)

0 投票
1 回答
1441 浏览

entity-framework-4 - 查询 EntityCollection

我已经使用默认的 EF 方式映射了我的类,并且我的所有 FK 都是 EntityCollection,因此例如 Bike.Wheels 将是 EntityCollection。

如何使用 Wheels?

  • 我想取回第一个和第二个轮子
  • 我想循环通过 Wheels
  • 我想要所有的轮子。螺栓

我无法使用 get/select/[]。

我错过了什么吗?

0 投票
1 回答
1087 浏览

entity-framework - 实体框架 - 相关的 ICollection 被具体化为 HashSet

我在我的项目中使用 EntityFramework POCO + 代理 + 延迟加载。今天,我很惊讶地看到该类Transaction将其相关集合Rows物化为HashSet(而不是EntityCollection)。我需要EntityCollection跟踪集合中的更改。

但是,其他实体类将其相关集合具体化为EntityCollection.

我正在加载Transactionthrough ObjectQuery,所以它应该在上下文中。对象的代理也被创建。

谁能告诉 - 实体框架如何决定使用什么 - HashSet 或 EntityCollection?为什么有些东西会变成 HashSet?

0 投票
3 回答
7804 浏览

entity-framework - Linq to entity - 如何在其 entitycollection 上选择具有 where 条件的实体?

我发现有好几次有人问同样的问题,但似乎答案从来都不是令人满意的,尽管它应该很容易(理论上)。这是我的问题:

我有一个名为“Company”的实体,其中有一个 entityCollection“Employees”(一对多)。我需要检索所有公司,对于每个公司,我只想要年龄大于 21 的员工。

我试过了 :

这不起作用,因为如果至少有一个高于 21 的人,它会给我每家公司的所有员工(它实际上与 .Any() 相同)

我试过了 :

这也不起作用(尽管它本来是完美的),它给了我以下错误:无法在 LINQ to Entities 查询中构造实体或复杂类型“MyModel.Company”。

你怎么能选择我所有的公司,每个公司的员工都在 21 岁以上?目前,我选择了所有,在客户端,我过滤了我的员工,但我不喜欢那个解决方案。

有谁能够帮我 ?


谢谢Morteza Manavi-Parast,它将完成工作!

尽管如此,我很难说服自己在唯一查询中这样做并没有在实体框架中实现。这是一个相对普遍的情况......作为证明,这个论坛上有很多像我这样的问题。

我很惊讶......也许下一个版本?


需要明确的是,我需要一个公司列表,因为我将查询结果直接绑定到数据网格。供您参考,当我单击数据网格的一行(因此选择一家公司)时,我有第二个网格,其中填充了来自 entityCollection 的员工(21 岁以上)。

0 投票
2 回答
909 浏览

c# - POCO DomainService 和 Client DomainContext EntityCollections 缺少实体

我有一个带有 Group 类型 ObservableCollection 的 MainBusinessLine 类型,我从 DomainService 调用的方法返回 MainBusinessLines 的可查询列表。因此,在此方法中,我已确认所有适当的组都已添加到 MainBusinessLines 组集合中。但是,当实体加载到客户端 silverlight 应用程序中时,几乎所有实体都丢失了。但更重要的是 MainBusinessLine 有另一个集合,它确实包含客户端加载操作后的所有适当实体。而我的 Association Attributes 也是一样的,也就是说 thisKey 和 otherKey 的参数设置类似。

我也在创建 POCO 类,而不是使用 EntityFramework。这是我的 MainBusinessLine 类的示例:

这里是 LOBs 和 Groups 类:

有人可以告诉我我在这里可能有什么问题吗?我觉得这与我设置关联属性的方式有关。谢谢

0 投票
2 回答
83 浏览

.net - 单击取消时恢复 EntityCollection 中的更改

我有一个 wpf 窗口,其中网格绑定到 entityCollection。在这里,我将记录添加/删除到网格,然后单击取消按钮。如何恢复对 entitycollection 所做的更改。

0 投票
2 回答
1044 浏览

c# - “包含”方法返回 false

我有一些奇怪的问题。

我有一个EntityCollection< T >包含一个元素,但 Contains 方法返回 false。

我已经覆盖了 T 的 'Equals' 方法,但 'Contains' 方法没有调用它(虽然在文档中是这样说的)。

当我这样做时foreach (T x in coll)x.Equals(element)返回 true。

谢谢您的帮助。

代码:

我实际上想使用的代码是

这工作了一次,但是当我开始使用 wcf 时就停止了,我想知道这个 contains 方法是如何工作的.....

0 投票
3 回答
2899 浏览

.net - 绑定到 EntityCollection 时如何让 Windows 窗体 DataGridView 显示新记录

尝试在运行时将新记录添加到 EntityCollection 并使用新信息更新 DataGridView。

我尝试将datagridview 直接绑定到实体集合(即ObjectSet),并通过绑定到同一集合的BindingSource。

我已经尝试过 DataGridView.Refresh()、DataGridView.EndEdit() 和 BindSource.ResetBindings() 等,但似乎没有任何效果。

0 投票
1 回答
940 浏览

c# - 通过自定义 IEqualityComparer 与 2 个 EntityCollections 相交

不要过多地重复这个问题,但我已经进行了搜索,结果却一无所获。所以我有两个 T 类型的 EntityCollections,我想在每个中找到共同的项目。捕获?除一个以外的所有字段都必须匹配。例如,如果 T 类型是 CustomSet 类型,并且 CustomSet 包括字段 F1、F2、F3 和 FK 字段 OtherId,则 F1、F2 和 F3 必须匹配(它们可以是字符串、整数,任何东西)并且 OtherId 永远不会匹配。我目前的实现:

将永远不会产生任何结果,因为 OtherId 列将永远不会在任何其他集合中匹配,即使字段 F1、F2 和 F3 可能匹配。所以我提出了一个 IEqualityComparer 的自定义实现,如下所示:

现在,我只是对此进行测试,因此传入的 obj 是 CustomSet 类型,如果我能让它正常运行,我将为我的其他类型添加必要的 if 语句。我知道 Intersect 扩展使用 GetHashCode 而不是 Equals 来比较项目,这就是为什么我真的不在乎我的 equals 中的内容,因为除了 EntityCollections 上的 Intersect 扩展之外,永远不会调用此类。问题是,这行不通。在我的测试集上,我知道我的“源”集合中有 28 个项目,“目标”集合中有 28 个项目,并且所有字段都匹配(显然,OtherId 字段除外)。我遍历了 GetHashCode 代码,因为它循环了 56 次,并且能够匹配每组中所有 28 个项目的哈希码,但“交叉点”的计数为 0。有什么我做错或遗漏的事情吗?谢谢。}