LINQ to SQL公共基类
2008-09-04 10:02:00 来源:WEB开发网当然,对于抽象一个基类而言,查询并没有问题,因为我们在调用这些方法时,是不需要实体属性的,也不必关心Lambda表达式的组成。
关键的问题是如何更新或删除数据表记录。在更新或删除它之前,我们必须获得要操作的实体。而查询的关键字通常是记录的ID。此外,在Data Context中的Object Identity和Change Tracking也需要对象的ID来跟踪它的变化。ID通常是自增长字段或者Guid字段,并作为表的主键。这样我们就可以根据它获得实体:
public void Update(Employee employee)
{
LinqSampleDataContext context = new LinqSampleDataContext();
Employee emp = this.Where(e => e.EmployeeID == employee. EmployeeID);
emp.FirstName = "First Name";
emp.LastName = "Last Name";
context.SubmitChanges();
}
显然,如果使用泛型例如TEntity,我们并不知道实体的属性。没有关键字,我们又该如何关联已经存在的记录的变化呢?LINQ引入了Attach方法,通过它可以将修改的对象附加到Data Context中。Attach方法具有三个重载版本,如下所示:
Attach(Object entity): 以未修改状态将实体附加到DataContext中;
Attach(Object entity, bool asModified): 以修改或未修改状态将集合中的所有实体附加到DataContext中;
Attach(Object entity, Object orginal): 通过指定实体及其原始状态,以修改或未修改状态将实体附加到 DataContext。.
Attach方法通常用来将反序列化的实体与DataContext的一个新实体关联。但我们也可以将一个DataContext中的实体关联到另外一个DataContext中。在修改或删除操作中,这一方法是非常有用的。
更多精彩
赞助商链接