小编Ral*_*alf的帖子

实体框架 - 渴望加载两个多对多关系

对不起这么久,但至少我认为我得到的所有信息都能够理解并可能有所帮助?

我想使用急切加载从我的数据库加载数据.

数据设置在五个表中,设置两个m:n关系级别.因此,有三个表包含数据(以层次结构的方式从上到下排序):

CREATE TABLE [dbo].[relations](
    [relation_id] [bigint] NOT NULL
)

CREATE TABLE [dbo].[ways](
    [way_id] [bigint] NOT NULL
)

CREATE TABLE [dbo].[nodes](
    [node_id] [bigint] NOT NULL,
    [latitude] [int] NOT NULL,
    [longitude] [int] NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

前两个实际上只包含他们自己的ID(用于挂钩此处不相关的其他数据).

在这三个数据表之间是两个m:n表,带有排序提示:

CREATE TABLE [dbo].[relations_ways](
    [relation_id] [bigint] NOT NULL,
    [way_id] [bigint] NOT NULL,
    [sequence_id] [smallint] NOT NULL
)

CREATE TABLE [dbo].[ways_nodes](
    [way_id] [bigint] NOT NULL,
    [node_id] [bigint] NOT NULL,
    [sequence_id] [smallint] NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

这基本上是OpenStreetMap数据结构的一部分.我让实体框架从这个数据库中构建它的对象,它就像表一样设置类.m:n表确实作为类存在.(我理解在EF中你可以构建你的对象m:n关系而不需要明确的中间类 - 我应该尝试以这种方式改变对象模型吗?)




我想做什么:我的切入点正是一个关系项.

我认为最好首先加载中间m:n关系,然后在循环中迭代并急切加载最低的一个.我试着用以下方式做到这一点

IQueryable<relation> query = context.relations;
query …
Run Code Online (Sandbox Code Playgroud)

linq-to-entities many-to-many entity-framework eager

5
推荐指数
1
解决办法
1万
查看次数