1

我正在使用实体框架和原始 sql 查询。我有一个观点,但在某些情况下,我只想获得几个字段,因为一个字段是文件流并且它的大小很大。

但是,当我使用例如以下 sql 时:

select Name, Surname from persons

我得到一个例外,说读者没有字段 XXX。这是因为我的视图实体,拥有视图的所有字段,但是执行查询时,结果并没有返回所有字段。

我想使用原始 sql 并获取类型人员的列表,我的意思是我想避免使用 var 类型。

我不能使用延迟加载,因为我使用的是 STE,并且自跟踪实体不支持延迟加载。

可以这样做吗?只选择视图的几个字段,还是只使用我需要的字段创建一个新视图?如果这是正确的,实体框架只能返回所有字段吗?在某些情况下,这可能效率低下。

总之,我想知道是否可以只选择一些带有 STE 和原始 sql 的字段。

谢谢。

4

1 回答 1

4

我不太确定是否将其应用于自我跟踪实体,但您过去一直这样做的方式是使用比您的实体更小的匿名类(或您创建的类):

context.People.Select(p=>new { Name = p.Name, Surname = p.Surname })

这将执行类似于您的问题中列出的 SQL 选择

于 2012-06-07T20:37:05.863 回答