Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未填充Linq到Sql对象_C#_Linq_Linq To Sql - Fatal编程技术网

C# 未填充Linq到Sql对象

C# 未填充Linq到Sql对象,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我是Linq的新手,正在努力解决我认为是延迟执行的问题。我的应用程序中有一个数据层,它使用Linq to Sql,然后使用WCF服务(MVVM体系结构)将实体传递到viewmodel。此时对象被序列化 我正在传递一个Employee对象,该对象应该有一个子Rota对象,但是当我试图从WCF在视图模型中访问它时,Rota为null。如果在传递employee对象之前在debug中查看该对象,则Rota将被序列化,并在我的视图模型中可用。我的Linq查询是一个简单的select,如何使它通过rota

我是Linq的新手,正在努力解决我认为是延迟执行的问题。我的应用程序中有一个数据层,它使用Linq to Sql,然后使用WCF服务(MVVM体系结构)将实体传递到viewmodel。此时对象被序列化


我正在传递一个Employee对象,该对象应该有一个子Rota对象,但是当我试图从WCF在视图模型中访问它时,Rota为null。如果在传递employee对象之前在debug中查看该对象,则Rota将被序列化,并在我的视图模型中可用。我的Linq查询是一个简单的select,如何使它通过rota?我可以循环遍历每个员工以枚举查询和rota对象,但这感觉非常错误。

我假设rota包含在一个集合中。将集合类型设置为
List
,如果是这种情况,这应该可以工作。

您已经在正确的轨道上了-查询只在您迭代它之后执行(在调试模式下检查它也会导致此迭代)。在通过web服务发送之前,只需在IQueryable上调用
ToList()
(从而对其进行迭代)。

因为您使用的是LinqToSql,所以在获取对象时应该使用DataContext.LoadWith。这是告诉LinqToSql应该下拉什么的首选方法(因为它默认为延迟加载)


与单独调用ToList或扩展EntityRef属性相比,这在SQL端的效率要高得多。

这正是我刚开始读到的内容—我正在慢慢转向Linq!
DataLoadOptions options = new DataLoadOptions();
options.LoadWith((Employee c) => c.Rota);
db.LoadOptions = options;