LINQ to SQL 关系





0/5 (0投票)
LINQ to SQL 是一种有趣的 对象关系映射器 (ORM),因为它会记住对象之间的关系。 和往常一样,LINQ to SQL
LINQ to SQL 是一种有趣的 对象关系映射器 (ORM),因为它会记住对象之间的关系。 和往常一样,LINQ to SQL 的工作方式与其他 ORM 类似,它有一个设计器,开发人员可以使用它来创建模拟数据库结构的架构。 LINQ to SQL 管理一个对象与其他对象之间的关系。 例如,每当一个对象被添加到另一个对象的子集合中时,就会建立一个主键/外键 (PK/FK) 关系。 如果在另一个对象中,应用程序将主键引用更改为其他内容,则此更改将反映在相应的集合中。
例如,一个 Customer 对象有一个 EntitySet 对象(这是用于表示子关系的对象类型)的 Order 对象。 Customer 是数据库中的 PK,Orders 集合是 FK。 每次向 Orders 实体集合添加一个新对象时,它都会被排队以插入到数据库中,并被添加到集合中。 因此,通过这种方式,LINQ to SQL 管理 Customer 和 Order 之间的关系。 如果您将主键引用更改为另一个对象,也同样适用。 LINQ to SQL 会将此对象转移到新的父对象的实体集合中。
当创建一个新对象时,它不会立即属于上下文。 例如,请看
Order order = new Order();
order.Total = 19.99;
order.Date = DateTime.Now;
此时,此对象是独立的,不属于上下文(它没有被排队进行插入)。 一旦你执行
customer.Orders.Add(order)
其中 customer 对象是从数据库检索的,这个新的 order 就会被排队进行插入,并作为与 customer 的关系添加。 如果使用标识,则键值设置为零,直到提交更改(在对象实际插入时刷新)。 此时,关系不会被验证;但是,如果存在主键/外键约束错误,则会在调用 SubmitChanges 时通过抛出异常来得知。