当前位置: 首页 > 编程语言 > .NET综合 > 正文

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

时间:2010-11-25 博客园 横刀天笑

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

ExecuteCommand, ExecuteQuery<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

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