LINQ学习笔记:LINQ to SQL实体类
如果实体类是由Visual Studio的设计器或者SqlMeta命令行工具自动生成的话, Customer和Purchase之间的关联会有相应的代码自动同步维护。换句话说, 赋值到Purchase.Customer属性会自动将一个新的Customer加入到Customer.Purchases这个EntitySet中,反之亦然. 因此我们可以将之前的例子改写为: 1: var dataContext = new MyTypedDataContext (“connectionString”); 2:
3: Customer cust = dataContext.Customers.Single
4:
5: (c => c.ID == 1);
6:
7: new Purchase { ID=100, Description=“Bike”, Price=500, 8:
9: Customer=cust};
10:
11: new Purchase { ID=101, Description=“Tools”, Price=100, 12:
13: Customer=cust};
14:
15: dataContext.SubmitChanges(); // 新增purchase
当你从一个EntitySet当中移除一条记录的时候,它的外键将会自动被设为null. 以下代码将两条purchase记录和它们对应的customer解除关系: 1: var dataContext = new MyTypedDataContext (“connectionString”); 2:
3: Customer cust = dataContext.Customers.Single(c => c.ID == 1);
4:
5: cust.Purchases.Remove
6:
7: (cust.Purchases.Single (p => p.ID == 100));
8:
9: cust.Purchases.Remove
10:
11: (cust.Purchases.Single (p => p.ID == 101));
12:
13: dataContext.SubmitChanges( ); // 提交到SQL SERVER 这里调用SubmitChanges会试图将数据库中对应的CustomerID列的值设为null, 因为数据库中此列必须为nullable, 更进一步, 实体类中对应的属性也必须是nullable的, 否则将会得到一个异常. 如果你想把记录从数据库中直接删除, 则应该使用DeleteOnSubmit将他们从Table<>中删除, 如下所示: 1: Customer cust = dataContext.Customers.Single(c => c.ID == 1);
2:
3: var dc = dataContext;
4:
5: dc.Purchases.DeleteOnSubmit
6:
7: (dc.Purchases.Single (p => p.ID == 100));
8:
9: dc.Purchases.DeleteOnSubmit
10:
11: (dc.Purchases.Single (p => p.ID == 101));
12:
13: dataContext.SubmitChanges(); // 提交到SQL SERVER数据库 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |