问题标签 [navigation-properties]

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 投票
2 回答
67770 浏览

c# - 实体框架 - 手动添加导航属性

我从我的数据库生成了一个实体框架模型(4.0)。我没有设计数据库,也没有对架构进行任何控制,但是有一些表没有定义外键约束,但是定义了隐式关系。

例如:

我有一个名为 People 的表,其中包含以下列: GenderID RaceID

Gender 和 Race 都有表,但 People 表中没有外键。

当我导入模型时,它没有为这些关系添加导航属性。我尝试手动添加它,但 From Role 和 To Role 被禁用。我不确定如何自己添加关系。我该怎么做呢?

0 投票
3 回答
1759 浏览

asp.net - 导航属性上的 DropDownList DataTextField

我需要以下帮助。

我从实体框架数据上下文中获取对象列表。

EntityA 是主对象(包含主键),但有一个名为“EntityALanguages”的导航属性,其中包含特定于语言的属性。

现在我想将列表绑定到下拉列表,并且需要从下拉列表中设置 DataValueField 和 DataTextField 属性。

如何将 DataTextField 设置为导航属性的属性,例如:

编辑:导航属性“EntityALanguages”是一个集合,所以 EntityA -> EntityALanguages 是一个 1-n 关系

0 投票
1 回答
1342 浏览

entity-framework - 实体框架导航属性的确切用途

请查看以下 POCO:

我不确定我需要像 Currency1 中的 ICollection 这样的导航属性。如果涉及到 EF CodeFirst,我发现创建的数据库结构没有区别。Currency1 和 Currency2 的表格在我看来几乎相同。那么为什么或者什么时候添加这个额外的属性是有意义的呢?

当然,只要想到 POCO,我就知道我无法从 Currency2 对象访问任何国家/地区。例如:

但这是唯一的区别吗?换句话说:如果我不需要从 Currency2 对象访问国家/地区,是否不需要在 Currency2 类中添加相应的导航属性以用于 EF?这里有点糊涂...

0 投票
3 回答
608 浏览

c# - 没有导航属性的外键值

插入记录时是否可以手动分配外键值?

我不想使用 TransactionScope 或类似的构造。但我确实想在调用 SaveChanges() 之前设置外键值

例如:

0 投票
1 回答
261 浏览

wcf - 实体导航属性应该通过 WCF 服务预加载还是延迟加载?

我们在 WCF 服务上使用自我跟踪实体。实体在没有加载其导航属性的情况下返回给客户端。

一次发送所有导航属性或根据需要延迟加载它们是更好的主意吗?如果延迟加载,异步加载它们是个好主意吗?到目前为止,我所有的 WCF 服务调用都使用 await/async 关键字。

我对一次性加载它们有些担心,因为有些对象有很多并不总是使用的导航属性。例如,Consumer 实体目前大约有 20 个,预计会获得更多。一些示例包括地址、电话、文档和注释。用户可以设置自己的工作区,这样处理文档的人可能在消费者加载时总是需要 Documents 属性,而大多数其他人则不需要。

0 投票
1 回答
5301 浏览

entity-framework - 使用实体框架导航属性而不创建大量查询(避免 N+1)

我一直在使用 Entity Framework Profiler 来测试我在 MVC 项目中的数据访问,并且遇到了几个页面,由于 N+1 问题,我进行的数据库查询比我需要的要多得多。

这是一个显示我的问题的简单示例:

视图循环遍历成员,然后跟随每个成员的导航属性来显示他们的地址。每个地址请求都会导致额外的数据库查询。

解决此问题的一种方法是使用 Include 来确保预先查询我需要的额外表。但是,我似乎只能在直接附加到上下文的俱乐部 ObjectSet 上执行此操作。在这种情况下,ActiveClub 属性由许多控制器共享,我并不总是想预先查询成员和地址表。

我希望能够使用类似的东西:

但是,Members 是一个 EntityCollection,它没有 Include 方法。

有没有办法强制加载成员 EntityCollection 并要求 EF 也加载他们的地址?

或者,以这种方式在实体上使用 EntityCollection 导航属性,这是一个非常糟糕的主意;当你从上下文中得到它时,你应该知道你正在加载什么?

0 投票
1 回答
636 浏览

entity-framework - 使用实体框架和 where 查询而不创建大量查询(避免 N+1)

我一直在使用一种设计模式,在使用 Entity Framework Profiler 之后似乎它可能非常愚蠢。

我已经扩展了我的实体类,使其具有作为与该实体关联的集合的过滤视图的属性。像这样:

因为我主要对没有离开俱乐部的会员感兴趣,所以这个属性非常有用并且似乎很有意义。

但是,通过运行 EF Profiler,我现在知道这通常会导致 N+1 问题。如果我遍历成员并且还想显示他们的地址,那么每个地址请求都会导致额外的数据库查询。

我从这个问题知道我问我可以将我的财产修改为:

在这种情况下,这将消除 N+1 问题,但我并不总是想要地址信息,我可能想要关注 Member 的另一个导航属性。

理想情况下,我希望能够保持我的过滤属性(如 ActiveMembers)的灵活性,并能够在事后决定要在查询中包含哪些属性。像这样:

这可能吗,还是我需要重新考虑我的过滤属性想法?

0 投票
1 回答
453 浏览

odata - 可以通过导航属性更新资源吗?

我有一个资源 A,它的导航属性指向资源 B。架构如下所示:

资源 A:

  • ID
  • B(这是一个一对多的导航属性)

资源 B:

  • ID
  • 财产1
  • 财产2

我可以通过A的导航链接更新资源B的值(即更新B的property1和property2)吗?换句话说,我可以说 AB[5].Property1 = x 吗?

在 OData 规范和示例中,我只看到了修改 B 的哪个实例与 A 关联的描述(即修改 /A(0)/$links/B),但看不到我是否可以对 / 执行 PUT/MERGE A(0)/B(2) 并修改 B 本身。

0 投票
1 回答
1822 浏览

odata - 如何更新一组实体?

假设我有一个资源 A,其中包含一个名为“Bs”的导航属性,该属性指向一组资源 B。给定资源 A 的一个实例,我可以通过资源 A 的导航属性批量更新资源 B 的集合吗?

我知道我可以通过对 /A(0)/B(1) 执行 PUT/MERGE 来更新 B 的单个实例。但是我可以对 /A(0)/B 的请求正文中的一组更新值进行 PUT/MERGE 吗?

0 投票
2 回答
9789 浏览

c# - 仅填充相关对象的 ID 时未加载导航属性

我正在尝试建立多对一的关系。表示“许多”的实体具有指向父实体的导航属性。它看起来像这样:

因此,当我插入上述实体时,我将 ProjectId 从应用程序传递到 Rfi 实体(而不是整个 Project 实体)。一切都很好。我遇到的问题是,当我将 Rfi 对象拉出数据库时,正在填充 ProjectId,但 Project 实体为空。我默认使用延迟加载。我是否也需要在 Project 实体上指定导航属性?我真的不想。除非,我可以在我的 Rfi 上执行映射来完成此操作。

更新:我假设 EF 4.1 会为我加载我的对象,但似乎有时我需要明确包含我想要加载的对象。我不完全确定为什么。我正在使用存储库来查询我的实体。这是我用来查询 Rfi 对象的方法:

我最终做了什么,在我的服务层我这样称呼它: