摘要: 检测并发 首先使用下面的SQL语句查询数据库的产品表:select * from products where categoryid=1 查询结果如下图: 为了看起来清晰,我已经事先把所有分类为1产品的价格和库存修改为相同值了。然后执行下面的程序: var query = from p in ctx.Products where p.CategoryID == 1 select p; foreach (var p in query) p.UnitsInStock = Convert.ToInt16(p.UnitsInStock - 1); ctx.SubmitChanges(); // 在这里 阅读全文
posted @ 2012-09-26 18:27 飞蛾扑火 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 延迟执行 IQueryable query = from c in ctx.Customers select c; 这样的查询句法不会导致语句立即执行,它仅仅是一个描述,对应一个SQL。仅仅在需要使用的时候才会执行语句,比如: IQueryable query = from c in ctx.Customers select c; foreach (Customer c in query) Response.Write(c.CustomerID); 如果你执行两次foreach操作,将会捕获到两次SQL语句的执行: IQueryable query = from c in ctx.Custom 阅读全文
posted @ 2012-09-26 18:25 飞蛾扑火 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 普通存储过程 首先在查询分析器运行下面的代码来创建一个存储过程:create proc sp_singleresultsetasset nocount onselect * from customers 然后打开IDE的服务器资源管理器,之前我们从表中拖动表到dbml设计视图,这次我们从存储过程中找到刚才创建的存储过程,然后拖动到设计视图。在方法面板中可以看到已经创建了一个sp_singleresultset的方法,如下图: 然后打开Northwind.designer.cs,可以找到下面的代码: [Function(Name="dbo.sp_singleresultset" 阅读全文
posted @ 2012-09-26 18:24 飞蛾扑火 阅读(171) 评论(0) 推荐(0) 编辑
摘要: select描述:查询顾客的公司名、地址信息查询句法:var 构建匿名类型1 = from c in ctx.Customers select new { 公司名 = c.CompanyName, 地址 = c.Address };对应SQL:SELECT [t0].[CompanyName], [t0].[Address]FROM [dbo].[Customers] AS [t0]描述:查询职员的姓名和雇用年份查询句法:var 构建匿名类型2 = from emp in ctx.Employees select new { 姓名 = emp.LastName + emp.FirstName, 阅读全文
posted @ 2012-09-26 18:21 飞蛾扑火 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 示例数据库字段名字段类型允许空字段说明IDuniqueidentifier表主键字段UserNamevarchar(50)留言用户名PostTimedatetime留言时间Messagevarchar(400)√留言内容IsRepliedbit留言是否回复Replyvarchar(400)√留言管理员回复 在数据库中创建一个名为GuestBook的数据库,在里面创建一个tbGuestBook的表,结构如上表。生成实体类 右键点击网站项目,选择添加新项,然后选择“Linq to sql Classes”,命名为GuestBook。然后打开App_Code里面的GuestBook.dbml。设计视 阅读全文
posted @ 2012-09-26 18:06 飞蛾扑火 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 什么是Linq to sql Linq to sql(或者叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全称基于关系数据的 .NET 语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能,它和Linq to xml、Linq to objects、Linq to dataset、Linq to entities等组成了强大的LINQ。 要学好LINQ查询语法,就不得不先理解C# 3.0的一些新特性,下面一一简单介绍。隐含类型局部变量var age = 26;var username = "zhuye";var userlist = new [] {& 阅读全文
posted @ 2012-09-26 18:05 飞蛾扑火 阅读(149) 评论(0) 推荐(0) 编辑
摘要: DataContext DataContext类型(数据上下文)是System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用方和把实体的修改写入数据库。 DataContext提供了以下一些使用的功能:l 以日志形式记录DataContext生成的SQLl 执行SQL(包括查询和更新语句)l 创建和删除数据库DataContext是实体和数据库之间的桥梁,那么首先我们需要定义映射到数据表的实体。定义实体类using System.Data.Linq.Mapping;[Table(Name = "Customers")] 阅读全文
posted @ 2012-09-26 18:05 飞蛾扑火 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 在上一篇中,我写了几个最最基本的DataMap映射,但是如果仅仅是这些功能的话,那iBatis真就有点愧对它的粉丝啦,我个人的理解,iBatis真的可以让开发者眼前一亮的特性在于它的动态SQL,在这一篇中,就会详细的阐述它在一个数据映射定义文件中,可以存在多个 Cache Models,Type Aliases,Result Maps,Parameter Maps,Statements,而且可以在不同的数据映射中使用数据操作指令映射<statement id=”statement name” [parameterMap=”parameterMap name”] [parameterCla 阅读全文
posted @ 2012-09-25 23:23 飞蛾扑火 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 总算,总算,能写点示例啦,呵呵,其实前面的几篇,我感觉自己写的也很生硬,没有Demo理解起来是很困难,很多名词,反正我初次接触iBatis的时候,是一点也不理解的,我也是比较习惯与从示例中学习的,到今天这一篇,终于可以完成一个可以让iBatis真正运行起来的实例啦,前面的,可能只能理解为纸上谈兵,不过之所以这么设计,也是不得意而为,因为你不从本质上了解它的协作过程,不会把这个框架运用的很好的这一篇要写到的,就是我们所有的查询语句的定义,DataMap,它也是定义在xml文档里的,的确iBatis.Net没有像nhibernate和linq to sql那样,不需要写sql语句,不过也正是因为在 阅读全文
posted @ 2012-09-25 23:23 飞蛾扑火 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 在iBatis.Net中,可以通过SqlMapper实例访问DataMapper API,其实以前写的都是一些iBatis.Net的概念和一些配置的问题,从这一篇开始,才是真正的精髓,也是我们使用iBatis.NET真正开始完整我们对数据库的任务的开始,这一篇我主要写一些DataMapper API,的定义、作用、使用方式,很遗憾,这一篇应该还是不会出现任何实例,因为还没有数据实体类和映射文档,这将会在下一篇写到Insert/Delete/Updatepublic object Insert(string statementName, object parameterObject); publ 阅读全文
posted @ 2012-09-25 23:22 飞蛾扑火 阅读(390) 评论(0) 推荐(0) 编辑