我有一个数据库,并且正在使用C#LINQ到使用查询语法的实体。

每个数据库表都有其自己的Entity Framework生成的模型类,这些数据库表和模型类分别命名为ReleaseVersion(还有其他表,但这是我的直接问题)。

我正在尝试根据查询将特定数据加载到这些模型类中。

本质上,我希望每个Release列和行,以及其关联的Version记录都填充在导航属性Release.Versions中。

但是,这里有两个关键点:

1)我只希望从查询中填充某些“版本”属性
(我只需要一些数据在“概述”页面中使用-如果不使用它,我看不到拖回所有数据的意义(可能相当大))。

2)我想查询填充版本和版本已经存在的模型类。
(Release.Versions导航属性中填充了“版本”记录,其中包含来自上面第1点的精选数据)

我可以使用存储过程来完成所有这些工作-没问题,但认为EF Linq会更快。哈。哈。哈阿

所以:

Release.ID            <---- Primary Key
Release.Col_1         <---- Other Properties (or columns)
Release.Col_2
Release.Col_3
Release.Versions      <---- Navigation Property to collection of Version records for each Release.

Version.ID            <---- Primary Key
Version.Release_ID    <---- Foreign Key to Release Table
Version.Col_1         <---- Many properties, just want first 4 properties obtained from DB.
Version.Col_2
Version.Col_3
Version.Col_4
Version.Col_5
Version.Col_x...


我只是语法不正确。

这就是我所拥有的(我尝试了许多其他变体,但没有什么比我记得的简单):

var query = (from r in context.Releases
             join v in context.Versions on r.ID equals v.Release_ID
             select r).ToList();

returnedRecords= new ObservableCollection<Model.Release>(query);


我似乎记得必须先使用select new Release { x,y,z },然后再使用嵌套的new Version { x, y, z}-但我一生都无法记住如何操作或如何使它填充Versions中的Navigation属性Release。类。

也许使用Lambda语法?

编辑:

好的,看来我无法做我想做的事。
因此,我不会使用查询语法,因为我可以在方法语法中找到大多数教程和文档。另外,我认为Include仅适用于Method语法,因此使用查询语法似乎有点毫无意义。

标记为正确的答案是我如何加载导航属性。

最佳答案

您可以简单地使用Include方法为表加载“外来”记录。

var x = context.Releases.Include("Versions").ToList();

10-08 09:24
查看更多