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