Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

.NET

An Interview with Amanda Silver on Language Integrated Query (LINQ)


DDJ: One place where I did feel like the abstraction leaked a little was around delayed query execution. The reason why I say that is because it feels like the Select statement line of code is where the query is going to execute, and then later you'll iterate over the results. But actually, the query doesn't execute until you start iterating. An error in your query might not show up until some distance farther in your code where the query actually executes. Can you talk a little about delayed query execution, and why it's important?

AS: There are a couple of reasons. We want people to write the query in the way that makes sense to them, and then they enumerate the results when they want to work with the results. What you don't want is for people to create monolithic queries, giant blobs of queries, that all execute at one time. You want them to able to write multiple queries throughout their code, and when they iterate the results, the queries combine and are remoted to a database or executed in memory. Also, when we're remoting the query to SQL, this lets us generate a single SQL query instead of executing multiple queries, one for each sub-query.

DDJ: So in a nutshell, you're saying that that deferred execution is an optimization. You're less likely to pull in data that you're not actually going to use, etc. What are your thoughts on helping with the debugging experience?

AS: This is something that we've been working on a lot. We've been doing a lot of planning about the implementation of this for the Orcas product. We have to figure out what the debugging experience is going to be like. One possible problem that you might troubleshoot is if the shape of the results isn't what you expect. In other words, it constructs a set of objects and those objects don't have the members that you expect them to have. Another debugging scenario is where the collection that results from the query isn't what you expected because maybe a filter was incorrect. And the last category of errors would be those interacting with the SQL database.

We've sat down and walked through how we could best provide tool support to help you troubleshoot. Hopefully the community will be seeing documents that reflect our plans pretty soon, but essentially we're going to be adding visualizers and debugging facilities to let you try out subqueries to see what the results are.

It's definitely something that we're going to be looking for feedback on.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.