我在读linq很懒,它直到需要时才执行查询。
如果是这种情况,那么此代码为什么会失败:
var db = new Data.DataClasses1DataContext(@"Data Source=.\sqlexpress;Initial Catalog=MyDb;Integrated Security=True");
var companies = db.Customers.Where(x => x.Company=="Foo");
var query = companies.ToString();
如果我在没有安装sql server的计算机中运行该代码,它将无法运行,为什么?我没有做任何需要数据的声明。如果我要致电,companies.ToList()
则可以让代码失败。有Linq to SQL Classes
没有不用连接就可以利用的方法。我知道我执行ToList()或尝试枚举结果的那一刻,我会得到一个错误。我只想使用Linq to Sql Classes来生成SQL语句并将其视为字符串。
我有一个客户端和一个服务器。服务器是WCF服务,客户端是控制台应用程序。在用户未输入查询的情况下,我将发送加密的查询。我想使用Linq to Sql classes
它来生成我的查询,因此我只需要在客户端上安装sql server即可生成查询。
我的临时解决方案是在同一服务器上创建第二个数据库。该数据库将被允许接受远程连接,其整个目的是使该行
var db = new Data.DataClasses1DataContext(@“某些远程连接字符串”);
作品。一旦初始化该行,就不再需要连接。这没有道理。
不要在客户端上生成查询,然后将SQL传递给服务。而是在客户端上生成lambda表达式,然后将这些表达式发送到服务。
请参阅“如何将Lambda表达式传递给WCF服务? ”。
这将解决的一个问题是数据库和模式版本控制。为此,需要客户端理解数据库架构甚至数据库版本,并且该客户端与服务使用的客户端相同(或兼容)。否则,您将难以在客户端上生成用于SQL Server一个版本的SQL,然后将其发送到服务上的其他SQL Server版本(或等效地,另一个数据库架构)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句