开发者

How do i modify Linq generated sql statement?

I have summarized my problem in following code.

NorthwindDataContext dc = new NorthwindDataContext();
        var query = from c in dc.Customers
                    select c;

Above code is generating following sql statement

    SELECT [t0].[ID], [t0].[FirstName], [t0].[LastName]
FROM [dbo].[Customer] AS [t0]

Now i want to modify the above generated query something like this

SELECT [t0].[ID], [t0].[FirstName], [t0].[LastNa开发者_开发知识库me] FROM [dbo].[Customer] 
AS [t0] WITH (nolock) 

Is it possible in linq to modify the generated query?If yes then how?


You will not be able to modify the generated L2S T-SQL code directly, the way you want (unless you modify the transaction isolation level). However, we've dealt with situations like this, fairly simply, by creating a view with lock hints we want in place and querying the view, instead of the table directly.


I have found a very handy tips for modifying the linq generated sql statement.

NorthwindDataContext db = new NorthwindDataContext();
            if (db.Connection.State == System.Data.ConnectionState.Closed)
                db.Connection.Open();
            var cmd = db.GetCommand(db.Customers.Where(p => p.ID == 1));
            cmd.CommandText = cmd.CommandText.Replace("[Customers] AS [t0]", "[Customers] AS [t0] WITH (NOLOCK)");
            var results = db.Translate(cmd.ExecuteReader());


Maybe these pages will help you..

http://www.infoq.com/news/2008/03/linq-nolock

http://coolthingoftheday.blogspot.com/2008/03/linq-to-sql-nolock.html

which refers hanselmans blog entry

http://www.hanselman.com/blog/GettingLINQToSQLAndLINQToEntitiesToUseNOLOCK.aspx

or check out this question

NOLOCK with Linq to SQL

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜