您的位置:知识库 » 数据库

走进Linq-How do I(4)拾遗补零篇第一节

作者: 横刀天笑  来源: 博客园  发布时间: 2008-09-24 11:56  阅读: 6121 次  推荐: 1   原文链接   [收藏]  

系列文章导航:

走进Linq--Linq横空出世篇

走进Linq-辉煌的背后

走进Linq-Linq大观园

不能不说的C#特性-对象集合初始化器

不能不说的C#特性-匿名类型与隐式类型局部变量

不能不说的C#特性-扩展方法

不能不说的C#特性-匿名方法和Lambda表达式

不能不说的C#特性-迭代器(上)及一些研究过程中的副产品

不能不说的C#特性-迭代器(下),yield以及流的延迟计算

走进Linq-Linq to Objects(上)基础篇

走进Linq-Linq to Objects(下)实例篇

走进Linq-Linq to SQL感性认识篇

走进Linq-Linq to SQL How do I(1)

走进Linq-Linq to SQL How do I(2)

走进Linq-Linq to SQL How do I(3)

走进Linq-How do I(4)拾遗补零篇第一节

走进Linq-Linq to SQL源代码赏析 Table的获取过程

走进Linq-Linq to SQL源代码赏析之Provider的初始化

走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq


DataContext还有几个我们比较感兴趣的方法:

ExecuteCommandExecuteQuery<TResult>Translate

这几个方法都是为了和传统的ADO.NET集成的。

ExecuteCommand可以做insert,update,delete操作,第一个参数接受一个格式化的sql语句,第二个参数是参数数组:

使用起来很简单:

dbCtx.ExecuteCommand("insert into posts(blogid,title,body) values({0},{1},{2})", "2", "走进Linq-How do I(4)", "废话一篇");

ExecuteQuery<TResult>方法呢?顾名思义,就是执行查询的,也有两个参数,第一个接受查询的SQL语句,第二个接受参数,返回一个IEnumerable<T>对象:

IEnumerable<Post> posts = dbCtx.ExecuteQuery<Post>("select * from posts where postid = {0}", "1");

            foreach (var post in posts)

                Console.WriteLine(post.Title);

Translate方法是将以前的DataReader转换为现在的Linq to SQL方式,这样有什么好处呢:

1.       可以利用现在的映射,不再需要这样的语句post.Title = dr[1].ToString();

2.       可以使用查询表达式的语法

 

对于插入,更新,删除这些经常使用的操作,为了提高性能,或者做一些自定义的操作,你还可以覆盖微软默认为你提供的Insert,Update等方法:

1.       写一个存储过程

CREATE PROCEDURE dbo.CreatePost

(

@blogid int,

@title nvarchar(50),

@body nvarchar(500)

       )

AS

insert into posts(blogid,title,body) values(@blogid,@title,@body)

RETURN

 

当然,这个存储过程非常简单,不值得这么去做,你就假设存在一个复杂的存储过程

2.       Posts表拖到设计器上,上面的存储过程拖到方法设计器上

3.       右键点击设计器上的表,在右键菜单里会有一项:配置行为(Config Behavior)

 

1
0
标签:LINQ LINQ to SQL

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻