我在下面的代码中总结了我的问题。
NorthwindDataContext dc = new NorthwindDataContext();
var query = from c in dc.Customers
select c;
以上代码生成以下sql语句
SELECT [t0].[ID], [t0].[FirstName], [t0].[LastName] FROM [dbo].[Customer] AS [t0]
现在我想修改上面生成的查询,就像这样
SELECT [t0].[ID], [t0].[FirstName], [t0].[LastName] FROM [dbo].[Customer] AS [t0] WITH (nolock)
是否可以在linq中修改生成的查询?如果是,那么如何?
答案 0 :(得分:4)
您将无法以您希望的方式直接修改生成的L2S T-SQL代码(除非您修改事务隔离级别)。但是,我们已经处理过这样的情况,相当简单,通过创建一个我们想要的锁定提示的视图并查询视图,而不是直接查询表。
答案 1 :(得分:4)
我找到了一个非常handy tips来修改linq生成的sql语句。
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());
答案 2 :(得分:2)