- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用LINQ to SQL建模Northwind数据库
在这之前一起学过LINQ to SQL设计器的使用,下面就使用如下的数据模型:
当使用LINQ to SQL设计器设计以上定义的五个类(Product,Category,Customer,Order和OrderDetail)的时候,每个类中的属性都映射了相应数据库中表的列,每个类的实例则代表了数据库表中的一条记录。另外,当定义数据模型时,LINQ to SQL设计器同样会创建一个自定义DataContext类,来作为数据库查询和应用更新/变化的主要渠道。以上数据模型中定义的DataContext类命名为“NorthwindDataContext”。该类中包含了代表每个建模数据库表的属性。
使用LINQ语法表达式可以十分简单的使用NorthwindDataContext类来查询和检索数据库中的数据。LINQ to SQL会在运行时自动的转换LINQ表达式到适当的SQL代码来执行。例如,编写以下LINQ表达式来根据Product Name检索单个Product对象:
还可以使用LINQ表达式来检索所有不存在于Order Details中的,并且UnitPrice大于100的所以Product:
变化跟踪和DataContext.SubmitChanges()
当执行查询和检索像Product实例这样的对象时,LINQ to SQL会自动保持对这些对象任何变化或更新的跟踪。我们可以进行任意次数的查询,以及使用LINQ to SQL的DataContext类作出更新,而这些变化都会被全部跟踪。
注意:LINQ to SQL的变化跟踪发生于调用者端——而不是在数据库中。这就意味着使用跟踪不会销耗任何数据库资源,也不需要在数据库中改变/安装任何组件模块。
当对从LINQ to SQL中检索的对象作出更改之后,我们可以选择调用DataContext上的SubmitChange()方法来应用变化返回到数据库。这将会导致LINQ to SQL动态计算并执行适当的SQL代码来更新数据库。例如,编写以下代码更新数据库中Product Name为“Chai”的Product上的UnitPrice和UnitsInStock:
当在以上代码中调用northwind.SubmitChanges()方法时,LINQ to SQL会动态构建并执行一个更新这两个Product属性值的SQL“UPDATE”代码模块。
在下面代码中我们来遍历不流行的,昂贵的Product,并把它们的ReorderLevel属性设为0:
当在以上代码中调用northwind.SubmitChanges()方法时,LINQ to SQL会计算并执行一组适当的UPDATE代码模块来修改RecorderLevel属性已变化的Product。
注意,如果一个Product的属性没有通过属性指定而发生变化,则该对象不会被认为是发生变化的,并且LINQ to SQL也不会对于该对象执行更新回数据库的操作。例如,如果“Chai”对象的UnitPrice仍旧是$2,UnitsInStock仍旧是4,当调用SubmitChange()时不会导致任何数据库UPDATE代码模块的执行。相似的,在第二个例子中的那些符合条件的Product中只有RecorderLevel原来不是0的才会在SubmitChange()被调用时更新。
插入和删除示例
除了更新数据库中已存在的行之外,LINQ to SQL同样支持插入和删除数据。可以通过从DataContext的表集合中添加/移除数据对象,并调用SubmitChange()方法来实现数据库中的插入和删除操作。LINQ to SQL也会对添加/移除操作保持跟踪,并当SubmitChange()被调用时自动执行适当的SQL中的INSERT或DELETE代码模块。
插入Product
可以通过创建一个新Product实例添加一个新的Product到数据库,设置它的属性,并添加它到DataContext类中的Product集合中:
当在以上代码中调用northwind.SubmitChanges()方法时,在数据库的Product表中会有一条新的记录被创建。
删除Product
与添加相似,可以通过从DataContext类中的Product集合中移除某一产品来表达想要从数据库中删除相应的记录:
在以上代码中先使用LINQ查询检索一系列不会被订购的Product,然后将其传入DataContext类中Product集合上的RemoveAll()方法。当在以上代码中调用northwind.SubmitChanges()方法时,这些Product记录就会从数据库中的Product表中删除。
通过关系关联更新
像LINQ
您可能关注的文档
最近下载
- 2024年天津市高考地理一轮复习答题模板专题精讲精练6 人口类综合题 .pdf VIP
- DB64 1522.1-2024养老机构安全应急处置规程 第1部分:老年人意外.pdf VIP
- 《食品科学概论》全套教学课件.pptx
- GB51158-2015 通信线路工程设计规范.docx VIP
- 电机检修方案.doc VIP
- 一种高油脱盐乳清配料粉及其生产工艺.pdf VIP
- 日文简历履历书模板大全.pdf VIP
- 入团志愿书电子版其它工作范文实用文档-入团志愿书电子版.pdf VIP
- TZJ 3001-2017 铁路基本建设工程设计概(预)算费用定额(完整版).doc.docx VIP
- 广州市番禺区东涌中学校本教材系列.doc VIP
文档评论(0)