\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}