当您运行Linq to Sql或Linq to Entites以获取其运行的记录列表时,查询以从表中选择所有字段。这是一个有效的解决方案。让我们说:我运行这个LINQ
dim lstCustomers = from c in db.Customers select c
它运行查询以从表中获取所有字段是否需要所有字段。我正在使用带有MVC的asp.net,所以我应该在视图中写这个查询(我只需要CustomerID和名字)
dim lstCustomers = from c in db.Customers _
select new Customer with { c.CustomerID, c.Name }
如果我必须使用第二个查询,那么LINQ和Entity Framework的优势是什么。我可以用SQL查询(使用不同的语法)来做这件事
任何人都可以提供帮助吗?
答案 0 :(得分:2)
首先,懒惰地评估LINQ查询。这意味着单行除了本身之外什么都不做,所以我假设你实际上用For Each
迭代结果。
您的第一个问题的答案是肯定的,所有字段都是使用第一个语句从数据库中检索的。
是的,但是为了直接使用SQL,您必须手动创建实体类,使用SqlDataReader
或其他东西手动检索数据,以实现LINQ在该行中提供的抽象级别。这是你的更多工作。使用LINQ to SQL,您甚至不需要显式编写代码来打开与数据库的连接。
答案 1 :(得分:0)
如果您编写了sql查询,那么重载步骤:
1.你需要一个sql连接类
2.你需要一个sql命令或sqldataadapter
3.然后你需要一个像datatable和dataset这样的容器
所以在使用linq时你不需要所有这些步骤。只需按上面所述编写查询。
也是因为你在sqlquery中写了不正确的东西然后没有编译时错误。只有在运行时执行查询时才会生成错误
但与sql查询不同,linq为您提供编译时错误
linq也是最好的强类型集合。