Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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
Visual studio 我可以在';中使用自动生成的Linq to SQL实体类吗;断开连接';模式_Visual Studio_Visual Studio 2008_Linq_Linq To Sql - Fatal编程技术网

Visual studio 我可以在';中使用自动生成的Linq to SQL实体类吗;断开连接';模式

Visual studio 我可以在';中使用自动生成的Linq to SQL实体类吗;断开连接';模式,visual-studio,visual-studio-2008,linq,linq-to-sql,Visual Studio,Visual Studio 2008,Linq,Linq To Sql,假设我有一个基于数据库中的Employees表自动生成的Employees类 现在假设我想将员工数据传递给一个ShowAges方法,该方法将打印员工列表的姓名和年龄。我将通过linq查询检索给定员工集的数据,该查询将返回一组Employee实例。然后,我可以将Employee实例传递给ShowAges方法,该方法可以访问Name和Age字段以获取所需的数据 但是,由于myEmployees表与数据库中的各种其他表有关系,因此myEmployees类还有一个Department字段、一个Manag

假设我有一个基于数据库中的
Employees
表自动生成的
Employees

现在假设我想将员工数据传递给一个
ShowAges
方法,该方法将打印员工列表的姓名和年龄。我将通过linq查询检索给定员工集的数据,该查询将返回一组
Employee
实例。然后,我可以将
Employee
实例传递给
ShowAges
方法,该方法可以访问
Name
Age
字段以获取所需的数据

但是,由于my
Employees
表与数据库中的各种其他表有关系,因此my
Employees
类还有一个
Department
字段、一个
Manager
字段等,用于访问这些其他表中的相关记录。如果
ShowAges
方法调用这些方法中的任何一个,这将导致按需从数据库中获取更多数据

我想确保
ShowAges
方法只使用我已经获取的数据,但我真的不想麻烦地定义一个新类,它复制
Employee
类,但方法更少。(在我的真实场景中,该类必须比这里描述的
Employee
类复杂得多;它将有几个确实需要填充的“已加入”类,以及其他不需要填充的类)

是否有办法“关闭”或“断开”员工实例的连接,以便尝试访问尚未填充的任何属性或相关对象时引发异常


如果不是,那么我假设,因为这必须是一个常见的需求,所以可能已经有了一个执行这类操作的模式?

一种方法是将实体从其数据库上下文中“分离”。看一看类似的问题。它向您展示了分离实体的两种方法。

也许不是您想要的答案,但是如何将查询结果投影到更轻的POCO中,例如:

var employeePOCOs = from e in l2sEmployees
select new EmployeePOCO
{
Id = e.Id,
Name = e.FirstName + " " + e.LastName
};
其中EmployeePOCO是一个预定义的类


那会有帮助吗?我在通过AJAX调用返回Entity Framework对象时使用了这个方法,输出将返回JSON,这似乎起到了作用。

@Randy:这个答案似乎是关于处理更新和同步的。我没有做任何更新,所以我更关心的是防止读取未填充的成员…?@Gary-将实体从datacontext中分离将防止读取未填充的成员。