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
字段以获取所需的数据
但是,由于myEmployees
表与数据库中的各种其他表有关系,因此myEmployees
类还有一个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中分离将防止读取未填充的成员。