61/66
\begin{frame}[fragile]
  \frametitle{LinQ: What the Runtime Module Does}
  
  \begin{indentation}{-.5cm}{0cm}
    \begin{minipage}{1\textwidth}
    \begin{tikzpicture}[n/.style={draw,rectangle,rounded corners=1mm,dashed,minimum width=32mm,minimum height=8mm,outer sep=1mm}]
      \begin{scope}[node distance=30mm,inner sep=1mm]
      \node (a) [n,fill=green!10] {Application};
      \node (l) [n,fill=blue!10,below of=a] {LinQ Runtime};
      \node (s) [n,fill=red!10,below of=l] {SQL Server};
      \end{scope}
      
      \begin{scope}[nodes={scale=.8},thick,>=triangle 45]
      \draw[->] (a.-150) -- node [left] {LinQ query} (l.150);
      \draw[<-] (a.-140) -- node [right] {Objects} (l.140);
      \draw[->] (a.-30) -- node [right,align=left] {submit\\changes} (l.30);

      \draw[->] (l.-150) -- node [left] {SQL query} (s.150);
      \draw[<-] (l.-140) -- node [right] {Rows} (s.140);
      \draw[->] (l.-30) -- node [right,align=left] {SQL or \\stored\\procedure} (s.30);
      \end{scope}
      
      \node [left of=a,node distance=40mm,draw,fill=yellow!10] {
        \begin{lstlisting}[language=Java,morekeywords={var,from,in,where,select,foreach,Console,orderby}]
from c in db.Customers
where c.City == "London"
select
new { c.Name, c.Phone }
        \end{lstlisting}
      };
      \node [left of=s,node distance=40mm,draw,fill=yellow!10] {
        \begin{lstlisting}[language=Java,morekeywords={var,from,in,where,select,foreach,Console,orderby}]
select Name, Phone
from customers
where city = 'London'
        \end{lstlisting}
      };
      \node (x) [right of=l,node distance=40mm,draw,fill=yellow!10,align=left] {
        \parbox{3cm}{{\scriptsize
        Services:
        \begin{itemize}\setlength{\itemindent}{-2ex}
          \item Change tracking
          \item Concurrency control
          \item Object identity
        \end{itemize}
        }}
      };
      \draw (x) -- (l);
    \end{tikzpicture}
    \end{minipage}
  \end{indentation}
\end{frame}