什么是使用LINQ To SQL或LINQ To Entities从数据库获取数据的有效方法?

时间:2009-08-09 20:40:15

标签: linq-to-sql linq-to-entities

当您运行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查询(使用不同的语法)来做这件事

任何人都可以提供帮助吗?

2 个答案:

答案 0 :(得分:2)

首先,懒惰地评估LINQ查询。这意味着单行除了本身之外什么都不做,所以我假设你实际上用For Each迭代结果。

您的第一个问题的答案是肯定的,所有字段都是使用第一个语句从数据库中检索的。

是的,但是为了直接使用SQL,您必须手动创建实体类,使用SqlDataReader或其他东西手动检索数据,以实现LINQ在该行中提供的抽象级别。这是你的更多工作。使用LINQ to SQL,您甚至不需要显式编写代码来打开与数据库的连接。

答案 1 :(得分:0)

实际上linq与写正常的写sql查询有不同的优势:

如果您编写了sql查询,那么重载步骤:
1.你需要一个sql连接类
2.你需要一个sql命令或sqldataadapter 3.然后你需要一个像datatable和dataset这样的容器
所以在使用linq时你不需要所有这些步骤。只需按上面所述编写查询。

也是因为你在sqlquery中写了不正确的东西然后没有编译时错误。只有在运行时执行查询时才会生成错误 但与sql查询不同,linq为您提供编译时错误
linq也是最好的强类型集合。