<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Steve Lasker's Web Log - www.SteveLasker.com/Blog</title><subtitle type="html">It's that time again; Move time. I'm now working on our Online Billing System for our cloud offerings. with the new gig, I've got a new blog: http://www.SteveLasker.com/Blog where I'll be discussing what we're working on, and how we're building a highly available, highly scalable business class billing system. Hope to see you at my new place,
Steve
</subtitle><id>http://blogs.msdn.com/stevelasker/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/stevelasker/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-05-14T18:22:00Z</updated><entry><title>New year, new gig, new blog. Moving to the cloud…</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2009/02/27/new-year-new-gig-new-blog-moving-to-the-cloud.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2009/02/27/new-year-new-gig-new-blog-moving-to-the-cloud.aspx</id><published>2009-02-27T07:55:00Z</published><updated>2009-02-27T07:55:00Z</updated><content type="html">&lt;p&gt;I've moved... Here's the new &lt;a href="http://www.stevelasker.com/Blog/post/2009/02/26/New-year-new-gig-new-blog-Moving-to-the-cloude280a6.aspx" mce_href="http://www.stevelasker.com/Blog/post/2009/02/26/New-year-new-gig-new-blog-Moving-to-the-cloude280a6.aspx"&gt;blog &lt;/a&gt;with details on why and what...&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9448062" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author></entry><entry><title>Demos, Presentations, Links, Screencasts and Videos for SQL Server Compact</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2008/11/25/demos-presentations-links-screencasts-and-videos-for-sql-server-compact.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2008/11/25/demos-presentations-links-screencasts-and-videos-for-sql-server-compact.aspx</id><published>2008-11-26T00:57:00Z</published><updated>2008-11-26T00:57:00Z</updated><content type="html">&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link href="file:///C:%5CUsers%5CSTEVEL%7E1.RED%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 
  
  
 
&lt;/xml&gt;&lt;![endif]--&gt;&lt;link href="file:///C:%5CUsers%5CSTEVEL%7E1.RED%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData"&gt;&lt;link href="file:///C:%5CUsers%5CSTEVEL%7E1.RED%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 
  Normal
  0
  
  
  
  
  false
  false
  false
  
  EN-US
  X-NONE
  X-NONE
  
   
   
   
   
   
   
   
   
   
   
   
   
  
  
  
   
   
   
   
   
   
   
   
   
   
   
  
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
 
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt;

&lt;/style&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin-top:0in;
	mso-para-margin-right:0in;
	mso-para-margin-bottom:10.0pt;
	mso-para-margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;

&lt;p&gt;I often find it hard to find my own demos scattered
throughout my blog, so figured I'd just create a single posting that had all my
current demos and powerpoints.&lt;/p&gt;&lt;h1&gt;Recent Presentations at PDC and Tech Ed&lt;br&gt;&lt;/h1&gt;&lt;p&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link href="file:///C:%5CUsers%5CSTEVEL%7E1.RED%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 
  
  
 
&lt;/xml&gt;&lt;![endif]--&gt;&lt;link href="file:///C:%5CUsers%5CSTEVEL%7E1.RED%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData"&gt;&lt;link href="file:///C:%5CUsers%5CSTEVEL%7E1.RED%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 
  Normal
  0
  
  
  
  
  false
  false
  false
  
  EN-US
  X-NONE
  X-NONE
  
   
   
   
   
   
   
   
   
   
   
   
   
  
  
  
   
   
   
   
   
   
   
   
   
   
   
  
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
 
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt;

&lt;/style&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin-top:0in;
	mso-para-margin-right:0in;
	mso-para-margin-bottom:10.0pt;
	mso-para-margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;

&lt;/p&gt;&lt;p&gt;&lt;a href="http://steve.lasker.members.winisp.net/Presentations/SQLServerCompactHighLevel.pptx"&gt;&lt;b&gt;SQL Server Compact Overview (lots of demos with
supporting slides)&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&amp;nbsp; &lt;br&gt;
&lt;/b&gt;This was a very demo heavy deck with supporting slides.&amp;nbsp; Covers
many of our SQL Server Compact goals and non-goals, including the tooling
scenarios, split between VS and Management Studio.&amp;nbsp; Slides and demo on
ASP.NET soft block, programming models with DataSet and SqlCeResultSet.&amp;nbsp;
(This deck was before we had LINQ to Entity support available).&amp;nbsp; Covers a
quick overview of optimized online, offline enabled architectures, with demos
of Sync Services for ADO.NET, including 2 tier and N Tier.&amp;nbsp; Then wraps up
with Logical Queuing as the overall architecture for client based apps.&amp;nbsp; I
had a lot of fun with this presentation, but it was hard to fit in an hour.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Presentations/TechEdEMEA08UnlockingThePowerOfCompact.pptx"&gt;&lt;b&gt;Unlocking the Power of SQL Server Compact (Tech Ed
EMEA 08)&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;br&gt;
&lt;/b&gt;Covered several topics, such as the questions on how fast can SQL
Server Compact insert data.&amp;nbsp; For Tech Ed EMEA, I added the section
discussing stored procedures, and how a common DAL layer can actually provide
more functionality than sprocs for both local data and server data. (yes, I'm
sure there will be lots more to debate on this topic, but here's our thought
process J)&lt;/p&gt;

&lt;p&gt;With some coverage on private deployment, including 64bit,
deep dive on perf and the managed sprocs demos, I bubbled back up to cover
several interesting aspects for using SQL Server Compact, including a
TraceListener to capture information from the field and sync it back with Sync
Services for ADO.NET.&amp;nbsp; Then covered read only databases on DVD's and using
Compact as a custom Document format.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&lt;u&gt;Associated Demos:&lt;/u&gt;&lt;/i&gt;&lt;/p&gt;

&lt;ul type="disc"&gt;&lt;li&gt;&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SQLcePerformance.zip"&gt;SQL Server Compact Bulk
     Insert Performance Test Harness (Compares Compact &amp;amp; Express)&lt;/a&gt;&lt;br&gt;
     Demonstrates the power of an embedded database and how much faster it can
     run than SQL Server for many operations.&amp;nbsp; By implementing a few
     things, such as "connection pooling" and caching your SqlCeCommand
     objects, you can achieve similar functionality provided by SQL Server's
     connection pooling and Query Plan caching.&amp;nbsp; However, because Compact
     is "in-proc" with your application, you can get the benefits of not having
     to work through additional networking, process and security layers
     required by SQL Server which is designed to work over the network.&lt;/li&gt;&lt;li&gt;&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/ManagedSprocs.zip"&gt;Managed Stored
     Procedures (A Common DLL for data access to Compact and SQL Server)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SqlServerCeTraceListener.zip"&gt;SQL Server Compact Trace
     Listener&lt;/a&gt;&lt;br&gt;
     Demo for using Compact as a TraceListener to capture the output of
     System.Diagnostics.Trace.WriteLine and then synchronize that info back to
     the server providing visibility into what's happening out on the
     client.&amp;nbsp; This deck includes animation, which looks a bit like Missile
     Command, demonstrating how this sample works.&lt;/li&gt;&lt;li&gt;&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/RunFromReadOnlyMedia.zip"&gt;Running Compact from
     Read Only Media (DVD, CD, Locked USB Key)&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/RecipeManager.zip"&gt;Using Compact as a
     Custom Doc Format (Recipe Manager)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://steve.lasker.members.winisp.net/Presentations/TechEdEMEA08ScriptBasedDeployment.pptx"&gt;&lt;b&gt;Managing and Versioning Client Databases (Tech Ed EMEA
08)&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Discusses the pros and cons of managing database deployment
on the client.&amp;nbsp; Why deploying databases as files, through MSI's, ClickOnce
or other technologies can be easy for V1, but could lead to data loss in
V2.&amp;nbsp; Why a little investment up front can yield you productive results
long term, and make for a better user experience.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&lt;u&gt;Associated Demos:&lt;/u&gt;&lt;/i&gt;&lt;/p&gt;

&lt;ul class="unIndentedList"&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/CreatingDatabaseSchemaInCode.zip"&gt;Creating
&amp;amp; Managing Local Database Versions through Scripts&lt;/a&gt; &lt;br&gt;
When deploying applications with a local database, deploying the database with
the app can seem easy at first, but once the user starts making changes to the
local database, it gets messy quickly. If you're not careful, you can
even lose the local data created/updated by the user. In &lt;a href="http://steve.lasker.members.winisp.net/Presentations/TechEdEMEA08ScriptBasedDeployment.pptx"&gt;this
presentation&lt;/a&gt;, I created several animated slides that explain the
complications and why script based deployment and versioning is the only
practical way to manage local databases. This sample walks through the
creation and versioning of local tables. To focus on the script based
versioning aspects, I excluded any interaction with synchronized tables as that
just gets even more complicated.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/VersioningSchema.zip"&gt;Versioning
Local Databases with Scripts when using Sync Services for ADO.NET&lt;/a&gt;&lt;br&gt;
In this demo we see how to version schemas when using Sync Services for
ADO.NET. This includes two projects. One for the initial
installation of V1, and another for the upgrade, or initial creation of
V2. V1 includes creating a set of tables that aren't synchronized, such
as state management for submitting orders to an existing service. Once sync
completes, there are a set of additional scripts to create foreign keys between
the synched tables, and between the synched tables and the local tables.&lt;br&gt;
V2 enhances the synchronized tables with additional columns. The setup of
this demo is a bit more complex as I've configured the server side sync
components in a dll, then hosted the dll in a WCF Web Project. The WCF
Web Project is published to an IIS instance, but uses different sub
directories: for V1-http://localhost/VersionSchema/&lt;b&gt;V1/&lt;/b&gt;LookupSyncService.svc,
for V2-http://localhost/VersionSchema/&lt;b&gt;V2/&lt;/b&gt;LookupSyncService.svc.
Using this versioning scheme we can publish V2, allowing apps to slowly migrate
over to V2, while the V1 apps continue to function and the business continues
to function. The animation in this &lt;a href="http://steve.lasker.members.winisp.net/Presentations/TechEdEMEA08ScriptBasedDeployment.pptx"&gt;presentation&lt;/a&gt;
helps explain this somewhat complex subject. &lt;/li&gt;&lt;/ul&gt;



&lt;h1&gt;&lt;b&gt;Just the demos, and nothing but the demos...&lt;/b&gt;&lt;/h1&gt;

&lt;ul class="unIndentedList"&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SqlServerCeTraceListener.zip"&gt;&lt;b&gt;SQL
Server Compact Trace Listener&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;br&gt;
&lt;/b&gt;Demo for using Compact as a TraceListener to capture the output of
System.Diagnostics.Trace.WriteLine and then synchronize that info back to the
server providing visibility into what's happening out on the client. &lt;a href="http://steve.lasker.members.winisp.net/Presentations/TechEdEMEA08UnlockingThePowerOfCompact.pptx"&gt;This
deck&lt;/a&gt; includes animation, which looks a bit like Missile Command,
demonstrating how this sample works.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SQLceUnderASPnet.zip"&gt;&lt;b&gt;Using
SQL Server Compact under ASP.NET&lt;/b&gt;&lt;/a&gt;&lt;br&gt;
Demonstrates how to "unblock" SQL Server Compact for usage under ASP.NET.
I discussed our reasoning in this &lt;a href="http://blogs.msdn.com/stevelasker/archive/2006/11/27/sql-server-compact-edition-under-asp-net-and-iis.aspx"&gt;post&lt;/a&gt;.
A quick recap: The reason we blocked Compact for ASP.net scenarios was simply
to not set expectations Compact is meant to be a replacement for SQL
Server. It performs better than Jet. For the most part, we
unblocked it for pre-building a SQL Server Compact database for sync scenarios
where it's faster to download the database as a stream, then to sync the
initial snapshot of data. It's also perfectly fine for small websites or
other services. The main intention is strictly to make sure developers
know, this is not meant to compete with SQL Server. There are coding
differences between Compact and SQL Server, so we really didn't want developers
to start with Compact, only to later find out it doesn't scale to thousands of
concurrent website/service users for updating data. As long as developers
understand the scope, it's perfectly fine to use for ASP.NET, WCF, or other
service scenarios...&lt;/li&gt;&lt;li&gt;
&lt;b&gt;SqlCeResultSet Demos - Scrollable,
Updateable, ISAM like cursors&lt;br&gt;
&lt;/b&gt;Demonstrates how developers can take advantage of embedded a database
directly into your app. The best thing about the SqlCeResultSet is it
works directly over the data in your local database. No queries that
bring the results into another copy in memory that you must mange potential
conflicts with the local store, or potential conflicts between the local store
and the remote server. With the SqlCeResultSet you can scroll directly
over the local table, even setting the index to filter and order the rows
you're viewing. The SqlCeResultSet is a scrollable, updateable cursor and
can really improve the perf and overall working set of your application. &lt;/li&gt;&lt;ul&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SqlCeResultSet.zip"&gt;&lt;b&gt;Direct
Access (ISAM) with the SqlCeResultSet&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;br&gt;
&lt;/b&gt;Why do we need to make copies of the data, update it, then send it
back? In a shared database environment, where you're likely connecting to
the database across the network, and sharing with potentially thousands of
others, because it's the only way we can scale. However, when the
database is local, in-proc with the app, things can be much simpler. In
this demo, you can easily update data, and as soon as you move off the row,
it's committed to the database. To get the most of this demo, run the
same app twice (CTRL+F5). Make changes in one of the instances, move off
the row. In the other instance, move to the row that was just updated,
(note: if you're already on the row, you'll need to move off then back).
You'll see the change made by the other app and can make the change back.
The one piece missing from this scenario is an implementation of eventing so
that instance 2 would see the changes made by instance one. This is why
you must move off, then back to the row to see the change. As you move
across the rows, the DataGridView requests the data. The data is fetched
directly from the local database/table.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SQLceISAM.zip"&gt;&lt;b&gt;Another
ISAM/SqlCeResultSet demo&lt;/b&gt;&lt;/a&gt;&lt;br&gt;
In this demo we see how the index can be set to control the order of the data.
Using a system view, we can populate the ListBox with the list of potential
indexes. As you change the index, the view is updated to reflect the data
sorted by that index. What isn't covered in this demo is the ability to
"filter" the values using the SqlCeCommand.SetRange() api which uses the index
to directly filter the visible rows.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SQLcePerformance.zip"&gt;&lt;b&gt;SQL
Server Compact Bulk Insert Performance Test Harness (Compares Compact &amp;amp;
Express)&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;br&gt;
&lt;/b&gt;Demonstrates the power of an embedded database and how much faster it can
run than SQL Server for many operations. By implementing a few things,
such as "connection pooling" and caching your SqlCeCommand objects, you can
achieve similar functionality provided by SQL Server's connection pooling and
Query Plan caching. However, because Compact is "in-proc" with your
application, you can get the benefits of not having to work through additional
networking, process and security layers required by SQL Server which is designed
to work over the network.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SQLce3264.zip"&gt;&lt;b&gt;Privately
deploying both the 32 and 64bit versions of SQL Server Compact with your app&lt;/b&gt;&lt;/a&gt;&lt;br&gt;
Do your users know whether they have 32bit or 64bit machines? If they are
64bit, are they running a 64bit version of the OS? Should they have to
figure this out? Using private deployment, developers can include both
the 32 and 64bit versions of Compact so the user never has to make a choice.
Yes, it's a bit more k to include in your app, but if it "just works", is that
a small price to pay?&lt;/li&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/RunFromReadOnlyMedia.zip"&gt;&lt;b&gt;Running
Compact from Read Only Media (DVD, CD, Locked USB Key)&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;/b&gt;&lt;br&gt;
Ever get a CD or DVD in the mail. Pop it in the drive to see what's on
it, and it prompts you to install some software - yikes! Let's see if you
can use this as a Frisbee and get it in the trash across the room, J With this demo, you can deploy a large
amount of content, but stored in a Compact database so your users can run the
app, search the data, and with private deployment, you can include the Compact
engine so your users can "view the data" without having to install
anything. &lt;br&gt;
The demo is simply an extension of private deployment, but modifies the
connection string to tell Compact to open the database in ReadOnly mode, and
specifies a temp directory: &lt;br&gt;
connStr = String.Format("Data Source = {0}\Northwind.sdf;Mode = Read
Only;Temp Path={1} ", Windows.Forms.Application.StartupPath,
My.Computer.FileSystem.SpecialDirectories.Temp)&lt;/li&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/RecipeManager.zip"&gt;&lt;b&gt;Using
Compact as a Custom Doc Format (Recipe Manager)&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;/b&gt;&lt;br&gt;
Need to save data from your app in a "document"? Want to post that
"document" to a SharePoint site or email it to another team member? Want
to double click your document and launch the associated app? Since SQL
Server Compact uses a single file, code free, file format, and since it doesn't
care what extension you use, developers can use custom extensions for the
database file to launch their app. In this demo I use Click Once
enhancements in .NET FX 3.5 SP1 to associate the custom extension with my
ClickOnce installed application.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/ManagedSprocs.zip"&gt;&lt;b&gt;Managed
Stored Procedures (A Common DLL for data access to Compact and SQL Server)&lt;/b&gt;&lt;/a&gt;&lt;b&gt;
&lt;br&gt;
&lt;/b&gt;The great debate will forever continue on the debate of sprocs and its
religion or science. I wrote about this &lt;a href="http://blogs.msdn.com/stevelasker/archive/2008/02/11/stored-procedures-and-sql-server-compact-the-great-debate.aspx"&gt;here&lt;/a&gt;,
but rather than debate the topic, here's a sample that shows how you can write
a common data access layer to target against SQL Server (Express included) and
Compact (SQLce) As outlined in &lt;a href="http://steve.lasker.members.winisp.net/Presentations/TechEdEMEA08UnlockingThePowerOfCompact.pptx"&gt;this
presentation&lt;/a&gt;, you can get far better scalability from your database by
moving the logic out of the database as you can create several front end
services to a single database, but you can only scale up a database so far
before you need to scale out, which today is a difficult task.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/LogicalQueuing.zip"&gt;&lt;b&gt;Logical
Queuing&lt;/b&gt;&lt;/a&gt;&lt;br&gt;
In a service oriented world, is it really practical to assume all "services"
can be synchronized? Or, is it a mixture of synchronizing some data, and
submitting to existing, non synchable services that really touches on
reality? In this demo, associated by this &lt;a href="http://blogs.msdn.com/stevelasker/archive/2007/08/21/sync-services-forado-net-and-sql-server-compact-presentation.aspx"&gt;blog
post&lt;/a&gt;, I demonstrate why using a database as your "queue" to services
provides much more practical and realistic methods for working with existing
services than expecting all the existing services to rev to support
"sync". Sync is a very important technology, but no one technology
serves all. In this &lt;a href="http://blogs.msdn.com/stevelasker/archive/2008/10/18/evolution-or-revolution-for-moving-to-offline-architectures.aspx"&gt;blog
post&lt;/a&gt; I noted down some thoughts, but not as polished as I was hoping to
post.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/ExcelWorkbook.zip"&gt;&lt;b&gt;Using
Compact within Excel&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;br&gt;
&lt;/b&gt;Ginny Caughey and I co-presented at Tech Ed US in 08. Ginny assembled
some great demos on using SQL Server Compact within VSTO, particularly within
Excel. &lt;/li&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/DatabaseViewer.zip"&gt;&lt;b&gt;Database
Viewer&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;/b&gt;&lt;br&gt;
Every wanted to just look inside a SQL Server Compact Database, but didn't want
to install Visual Studio or SQL Server Management Studio Express? With
this little utility you can see the list of tables, and the data within each
table. Not a full featured app, but rather a utility I use to show
encryption or the ability to open a database across multiple users. It
does show how to query the system views to get the list of tables.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/CreatingDatabaseSchemaInCode.zip"&gt;&lt;b&gt;Creating
&amp;amp; Managing Local Database Versions through Scripts&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;br&gt;
&lt;/b&gt;When deploying applications with a local database, deploying the database
with the app can seem easy at first, but once the user starts making changes to
the local database, it gets messy quickly. If you're not careful, you can
even lose the local data created/updated by the user. In &lt;a href="http://steve.lasker.members.winisp.net/Presentations/TechEdEMEA08ScriptBasedDeployment.pptx"&gt;this
presentation&lt;/a&gt;, I created several animated slides that explain the
complications and why script based deployment and versioning is the only
practical way to manage local databases. This sample walks through the
creation and versioning of local tables. To focus on the script based
versioning aspects, I excluded any interaction with synchronized tables as that
just gets even more complicated.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/VersioningSchema.zip"&gt;&lt;b&gt;Versioning
Local Databases with Scripts when using Sync Services for ADO.NET&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;br&gt;
&lt;/b&gt;In this demo we see how to version schemas when using Sync Services for
ADO.NET. This includes two projects. One for the initial
installation of V1, and another for the upgrade, or initial creation of
V2. V1 includes creating a set of tables that aren't synchronized, such
as state management for submitting orders to an existing service. Once sync
completes, there are a set of additional scripts to create foreign keys between
the synched tables, and between the synched tables and the local tables.&lt;br&gt;
V2 enhances the synchronized tables with additional columns. The setup of
this demo is a bit more complex as I've configured the server side sync
components in a dll, then hosted the dll in a WCF Web Project. The WCF
Web Project is published to an IIS instance, but uses different sub
directories: for V1-http://localhost/VersionSchema/&lt;b&gt;V1/&lt;/b&gt;LookupSyncService.svc,
for V2-http://localhost/VersionSchema/&lt;b&gt;V2/&lt;/b&gt;LookupSyncService.svc.
Using this versioning scheme we can publish V2, allowing apps to slowly migrate
over to V2, while the V1 apps continue to function and the business continues
to function. The animation in this &lt;a href="http://steve.lasker.members.winisp.net/Presentations/TechEdEMEA08ScriptBasedDeployment.pptx"&gt;presentation&lt;/a&gt;
helps explain this somewhat complex subject. &lt;/li&gt;&lt;/ul&gt;





























&lt;p&gt;&lt;strong&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/strong&gt;&lt;a href="http://steve.lasker.members.winisp.net/Demos/TechEdEMEA07/Express/ExpressScriptDeploy.zip"&gt;&lt;b&gt;Deploying
Express with Scripts&lt;/b&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Similar to the Compact deployment model, but with the
additional steps required to create the physical mdf/ldf combination.&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul class="unIndentedList"&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/CompactEntityProviderPrivateDeployment.zip"&gt;Private
Deployment using the ADO.NET Entity Provider&lt;/a&gt;&lt;br&gt;
One of the most popular features of SQL Server Compact is its ability to
privately deploy the Compact runtime as a set of dlls directly within your
application. But when using the ADO.NET Entity framework, things get a
little more difficult as the Entity Framework uses the Provider Factory model
for loading the individual data providers. I discussed this in more
detail in &lt;a href="http://blogs.msdn.com/stevelasker/archive/2008/10/22/privately-deploying-sql-server-compact-with-the-ado-net-entity-provider.aspx"&gt;this
post&lt;/a&gt;, but here's a sample showing how to include the dlls and changes in
app.config to work properly. &lt;/li&gt;&lt;li&gt;
&lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/CommonDataDeviceDesktop.zip"&gt;Common
Programming between Desktop &amp;amp; Device&lt;/a&gt; &lt;br&gt;
While SQL Server Compact provides the same apis between desktop and device
(.NET Framework and the .NET Compact Framework), it can get a little more
complex as the surrounding apis, such as the lack of the |DataDirectory| macro,
and the lack of settings make it more difficult. This project shows a
strategy for filling in the missing pieces of the .NET Compact framework so you
can compile the same sourcecode for desktop, then device.&lt;/li&gt;&lt;/ul&gt;



&lt;h1&gt;Other interesting
links to previous posts:&lt;/h1&gt;

&lt;ul class="unIndentedList"&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2006/04/10/SqlEverywhereInfo.aspx"&gt;Information
about SQL Server Compact Edition (SQLce) &lt;/a&gt;- the original post when we
unlocked SQL Server Mobile for desktop usage&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2006/07/06/SQLServerEverywhereDeploymentOptions.aspx"&gt;Screencast
of Deployment Options for SQL Server Compact&lt;/a&gt; - shows how to deploy Compact
privately. This has changed now that we've incorporated 64bit deployment
as well, so suggest you also look at: &lt;a href="http://blogs.msdn.com/stevelasker/archive/2008/10/22/privately-deploying-sql-server-compact-with-the-ado-net-entity-provider.aspx"&gt;Privately
Deploying SQL Server Compact with the ADO.NET Entity Provider&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2006/07/07/SqlServerEverywhereResultSet.aspx"&gt;ADO.net
Programming options for SQL Server Compact&lt;/a&gt; discussion of DataSets,
SqlCeResultSet, and the pending LINQ programming models (this was originally
posted before we launched VS 2008)&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2006/11/08/comparing-sql-server-express-and-compact-editions-whitepaper.aspx"&gt;Comparing
SQL Server Express and Compact Editions Whitepaper&lt;/a&gt; - an older, but still
relevant and accurate discussion Mike Wachal and I put together describing the
pros and cons of each engine&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2006/11/13/doc-storage-in-sqlce-and-the-4gb-limit.aspx"&gt;Doc
storage in SQLce and the 4gb limit&lt;/a&gt; a bit of discussion on why we have a 4gb
limit, and how this is a technical, not business reason. At some point,
in a future version/incarnation of SQL Server Compact, we will remove this
limitation.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2006/11/14/bill-vaughn-writes-an-ebook-on-sql-server-compact-edition.aspx"&gt;Bill
Vaughn writes an eBook on SQL Server Compact Edition&lt;/a&gt; - A good, cheap, quick
book to get you started&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2006/11/27/sql-server-compact-edition-under-asp-net-and-iis.aspx"&gt;SQL
Server Compact Edition under ASP.net and IIS&lt;/a&gt; - why is this blocked by
default?&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2007/03/18/QAforOCS_2D00_SyncServicesForAdoNet.aspx"&gt;Q&amp;amp;A
on OCS &amp;amp; Sync Services for ADO.NET&lt;/a&gt; - an initial discussion on the
positioning of Sync Services for ADO.NET, RDA and Merge Replication. This
was posted prior to us announcing the Sync Framework. &lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2007/03/21/additional-q-a-on-the-visual-studio-orcas-sync-designer.aspx"&gt;Additional
Q&amp;amp;A on the Visual Studio Orcas Sync Designer&lt;/a&gt; - Additional information
on the VS 2008 Sync Designer, including what it does and doesn't attempt to
solve.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2007/03/22/first-look-at-the-visual-studio-orcas-sync-designer.aspx"&gt;First
look at the Visual Studio Orcas Sync Designer&lt;/a&gt; - A screencast showing how to
use the VS 2008 Sync Designer&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2007/03/23/going-n-tier-w-wcf-synchronizing-data-using-sync-services-for-ado-net-and-sql-server-compact-edition.aspx"&gt;Going
N Tier w/WCF, Synchronizing data using Sync Services for ADO.NET and SQL Server
Compact Edition &lt;/a&gt;- A screencast showing how to take the default "2
tier" configuration to "N-Tier"&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2007/05/14/empowering-your-users-with-reference-data-and-knowledge.aspx"&gt;Empowering
your users with reference data and knowledge&lt;/a&gt; - A discussion related to
whether it's realistic to assume we can implement a common programming model
between the server and local database (regardless of whether you use Express or
Compact locally)&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2007/08/07/configuring-visual-studio-2005-for-use-wtih-sql-server-2005-compact-edition.aspx"&gt;Configuring
Visual Studio 2005 for use with SQL Server 2005 Compact Edition &lt;/a&gt;- SQL
Server Compact 3.1 shipped just after VS 2005 SP1. So how do you get
these working together?&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2007/08/10/notification-to-pull.aspx"&gt;Notification
to Pull&lt;/a&gt; - A bit of an architectural conversation on where Sync, existing
services, queuing, and local data fit into an application architecture.
The demo for this discussion is &lt;a href="http://steve.lasker.members.winisp.net/Demos/SQLce35/LogicalQueuing.zip"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2007/08/30/sql-server-compact-3-5-features.aspx"&gt;SQL
Server Compact 3.5 Features&lt;/a&gt; - A quick recap of what shipped in Compact 3.5&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2008/02/11/stored-procedures-and-sql-server-compact-the-great-debate.aspx"&gt;Stored
Procedures and SQL Server Compact - the Great Debate&lt;/a&gt; - the title says it
all&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2008/01/15/msdn-webcast-introducing-sql-server-compact-3-5.aspx"&gt;MSDN
Webcast: Introducing SQL Server Compact 3.5 &lt;/a&gt;a webcast covering our 3.5
release&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2007/11/07/presentations-demos-from-tech-ed-barcelona-07.aspx"&gt;Presentations
&amp;amp; Demos from Tech Ed Barcelona 07&lt;/a&gt; - There are more up to date demos,
but this is where we first announced the deprecation of RANU or otherwise known
as User Instances. This deck also covered the script based deployment and
management of SQL Server Express.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://blogs.msdn.com/stevelasker/archive/2008/10/18/evolution-or-revolution-for-moving-to-offline-architectures.aspx"&gt;Evolution
or Revolution for moving to offline architectures&lt;/a&gt; - a high level discussion
on mapping today's programming concepts (get &amp;amp; put), and converging them to
a more "occasionally connected" or online optimized model where get=cache,
put=queue, and we add sync to the common verbs used with working with data&lt;/li&gt;&lt;/ul&gt;





































&lt;h1&gt;Some great partner
tools&lt;/h1&gt;

&lt;ul class="unIndentedList"&gt;&lt;li&gt;
&lt;a href="http://www.primeworks-mobile.com/Products/DataPortConsole.html"&gt;Data Port
Console&lt;/a&gt; by Primeworks&lt;br&gt;
Great tool for scripting tables from SQL Server Compact. For only $50,
it's hard to beat&lt;/li&gt;&lt;li&gt;
&lt;a href="http://www.gui-innovations.com/html/remotesqlce.html"&gt;Remote SQLce&lt;/a&gt;&lt;br&gt;
Great tool for managing a Compact database on the device, from the desktop &lt;/li&gt;&lt;li&gt;
&lt;a href="http://www.codeplex.com/"&gt;CodePlex&lt;/a&gt;&lt;br&gt;
Codeplex is starting to collect several great code projects related to SQL
Server Compact. I'm sure this will continue to grow, so it's a great
place to look for what pain someone else has already endured &lt;/li&gt;&lt;ul&gt;&lt;li&gt;
&lt;a href="file:///C:/Users/SteveLas.REDMOND/AppData/Local/Temp/Search%20for%20SQLce"&gt;Search
for SQLce&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
&lt;a href="http://www.codeplex.com/Project/ProjectDirectory.aspx?ProjectSearchText=sql%20compact"&gt;Search
for SQL Compact&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;









&lt;h1&gt;Great books&lt;/h1&gt;

&lt;ul class="unIndentedList"&gt;&lt;li&gt;
&lt;a href="http://www.hitchhikerguides.net/"&gt;&lt;b&gt;HitchhikerGuides.net
&lt;/b&gt;&lt;/a&gt;&lt;b&gt;- &lt;/b&gt;Bill Vaughn&lt;br&gt;
Bill has a great, no BS style that just helps you get to the facts. It's
a quick read, and at only $10, it's hard to pass up when you want to get up to
speed quickly on Compact.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://www.amazon.com/Microsoft-SQL-Server-2005-Compact/dp/0672329220/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1225297297&amp;amp;sr=8-1"&gt;&lt;b&gt;Microsoft
SQL Server 2005 Compact&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;/b&gt;- Prashant Dhingra&lt;br&gt;
Prashant originally worked in the Compact team, and provides a great insiders
look at SQL Server Compact&lt;/li&gt;&lt;li&gt;
&lt;a href="http://shop.campusmvp.com/Product-SQL-Server-Compact-2008-SP1-Referencia-Completa_34.aspx"&gt;&lt;b&gt;SQL
Server Compact &lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;i&gt;(In Spanish)&lt;/i&gt;&lt;/b&gt;- Jose M. Torres &lt;br&gt;
If you're looking for a book on Compact in Spanish, here you go. I wish I
could say I've read it, but, it's been years since I was at all fluent in
Spanish. From what I have flipped through, it looks like it's covered all
the topics. Jose has been active in the community, so I'd say it's a
great bet.&lt;/li&gt;&lt;li&gt;
&lt;a href="http://www.amazon.com/Windows-Mobile-Synchronization-Server-Compact/dp/0979891205/ref=pd_bbs_sr_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1225297297&amp;amp;sr=8-2"&gt;&lt;b&gt;Windows
Mobile Data Synchronization&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;/b&gt;- Rob Tiffany&lt;br&gt;
Need some help, or want to know about Merge Replication? Might as well
get it from the mast of Merge - Rob Tiffany. Rob spends his time
traveling around the world helping customers scale and configure Merge.
If it's been done, Rob has seen it, and likely has helped get it working.&lt;/li&gt;&lt;/ul&gt;







&lt;h1&gt;Other Support/Info
Channels&lt;/h1&gt;

&lt;h2&gt;SQL Server Compact
Blogs &amp;amp; Forums&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/SteveLasker"&gt;Steve Lasker's
Blog&lt;/a&gt;&lt;br&gt;
The blog you got this document from, :) Lots of information on how we got here,
demos and powerpoints.&amp;nbsp; But, since I've moved off the team, won't be able
to maintain the information going forward, so I'd recommend the following blogs
going forward.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/SqlServerCompact"&gt;SQL Server
Compact Team Blog&lt;/a&gt;&lt;br&gt;
Where most of the team posts info.&amp;nbsp; Everything from our encryption
details, Entity support, query processor details, etc.&amp;nbsp; You can think of
it as the authoritative source.&amp;nbsp; Even Laxmi posts to the Team Blog as well
as his own...&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/Laxmi"&gt;Laxmi's Blog&lt;/a&gt;&lt;br&gt;
One of great and passionate developers on the SQL Server Compact team.&amp;nbsp; Be
careful what you ask for, ‘cause Laxmi will tell you J.&amp;nbsp; Seriously, Laxmi spends a lot of time in the forums
listening and answering the issues and has a lot of experience with the
product.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://forums.microsoft.com/msdn/showforum.aspx?forumid=152&amp;amp;siteid=1"&gt;SQL
Server Compact Forums&lt;/a&gt;&lt;br&gt;
Where the team and our MVPs hang out to answer your questions.&amp;nbsp; In
addition to the product team, you'll also find answers from those that are
actually using the product.&amp;nbsp; We've gotten some great info here as well for
how the product is actually used, as opposed to what we thought developers
would do with Compact &amp;lt;g&amp;gt;&lt;/p&gt;

&lt;h1&gt;Sync Framework/Sync
Services for ADO.NET Blogs &amp;amp; Forums&lt;/h1&gt;

&lt;p&gt;&lt;a href="http://msdn.com/sync"&gt;Sync Development Center&lt;/a&gt;&lt;br&gt;
The home for the sync team and discusses the Sync Framework as well as Sync
Services for ADO.NET.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/sync/"&gt;Sync Team Blog&lt;/a&gt;&lt;br&gt;
Less formal information on Sync Services and the Sync Framework&lt;/p&gt;

&lt;p&gt;&lt;a href="http://forums.microsoft.com/sync/default.aspx?ForumGroupID=529&amp;amp;SiteID=75"&gt;Sync
Framework/Sync Services for ADO.NET Forums&lt;/a&gt;&lt;br&gt;
A great place to post questions and find answers from the Sync team&lt;/p&gt;





&lt;p&gt;&lt;a href="http://www.syncguru.com/"&gt;Syncmaster Rafik website&lt;/a&gt;
and &lt;a href="http://blogs.msdn.com/synchronizer/"&gt;Blog&lt;/a&gt;&lt;br&gt;
Rafik Robeal was one of our core developers for Sync Services for ADO.NET and
has all the nuts and bolts knowledge for what we originally built.&amp;nbsp;
Unfortunately, Rafik has moved onto other ventures.&amp;nbsp; However, he's still
got some great content on his site.&lt;/p&gt;&lt;p&gt;Enjoy the holidays,&lt;/p&gt;&lt;p&gt;Steve&amp;nbsp;



&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9142840" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author><category term="Code Samples" scheme="http://blogs.msdn.com/stevelasker/archive/tags/Code+Samples/default.aspx" /><category term="Presentations" scheme="http://blogs.msdn.com/stevelasker/archive/tags/Presentations/default.aspx" /><category term="Q&amp;amp;A" scheme="http://blogs.msdn.com/stevelasker/archive/tags/Q_2600_amp_3B00_A/default.aspx" /><category term="SQLce" scheme="http://blogs.msdn.com/stevelasker/archive/tags/SQLce/default.aspx" /><category term="Sync Services" scheme="http://blogs.msdn.com/stevelasker/archive/tags/Sync+Services/default.aspx" /><category term="SQL Server Compact Edition" scheme="http://blogs.msdn.com/stevelasker/archive/tags/SQL+Server+Compact+Edition/default.aspx" /><category term="OCS" scheme="http://blogs.msdn.com/stevelasker/archive/tags/OCS/default.aspx" /><category term="offline" scheme="http://blogs.msdn.com/stevelasker/archive/tags/offline/default.aspx" /></entry><entry><title>Tech Ed EMEA 08 Powerpoints and Demos</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2008/11/19/tech-ed-emea-08-powerpoints-and-demos.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2008/11/19/tech-ed-emea-08-powerpoints-and-demos.aspx</id><published>2008-11-19T21:07:00Z</published><updated>2008-11-19T21:07:00Z</updated><content type="html">&lt;P&gt;Another great year in Barcelona.&amp;nbsp; In addition to the sessions below, we had several nights out on the town.&amp;nbsp; As usual, we had the Microsoft Regional Director get togethers.&amp;nbsp; It's always interesting when you have social geeks out on the town.&amp;nbsp; &lt;A class="" href="http://weblogs.asp.net/cmenegay/" mce_href="http://weblogs.asp.net/cmenegay/"&gt;Chris Menegay&lt;/A&gt;&amp;nbsp;and I decided to make it a late night on Friday.&amp;nbsp; I had to be ready to leave at 4:40am to catch my flight anyway.&amp;nbsp; The bars down at the water front are always fun to "see the people".&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I should also mention a great tasting menu restaurant that &lt;A class="" href="http://weblogs.asp.net/shankun/" mce_href="http://weblogs.asp.net/shankun/"&gt;Shanku Niyogi&lt;/A&gt;&amp;nbsp;introduced us to a few years ago &lt;A class="" href="http://www.cincsentits.com/en/" mce_href="http://www.cincsentits.com/en/"&gt;Cinc Sentits&lt;/A&gt;.&amp;nbsp; About 14 of us, including Pat Helland, Rocky Lhotka and his lovely wife, Brian Randell, Lisa Feigenbaum, David Hill, Kathy Kam, William Oellermann (an old friend from Dallas), Karen Liu all went.&amp;nbsp; Great food and wine, and would highly recommend it to anyone visiting Barcelona.&lt;/P&gt;
&lt;P&gt;Anyway, here's the demos and powerpoints...&lt;/P&gt;
&lt;P&gt;&lt;B&gt;DAT314&amp;nbsp; Unlocking the Power of SQL Server Compact 3.5&lt;/B&gt;&amp;nbsp; &lt;BR&gt;&lt;A class="" href="http://steve.lasker.members.winisp.net/Presentations/TechEdEMEA08UnlockingThePowerOfCompact.pptx" mce_href="http://steve.lasker.members.winisp.net/Presentations/TechEdEMEA08UnlockingThePowerOfCompact.pptx"&gt;Powerpoint&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Demos:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-size: 10.0pt; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SQLcePerformance.zip"&gt;SQL Server Compact Bulk Insert Performance Test Harness (Compares Compact &amp;amp; Express)&lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-size: 10.0pt; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-size: 10.0pt; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/ManagedSprocs.zip"&gt;Managed Stored Procedures (A Common DLL for data access to Compact and SQL Server)&lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-size: 10.0pt; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;/SPAN&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SqlServerCeTraceListener.zip"&gt;&lt;FONT face=Calibri size=3&gt;SQL Server Compact Trace Listener&lt;/FONT&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-size: 10.0pt; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/RunFromReadOnlyMedia.zip"&gt;Running Compact from Read Only Media (DVD, CD, Locked USB Key)&lt;/A&gt; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-size: 10.0pt; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-size: 10.0pt; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/RecipeManager.zip"&gt;Using Compact as a Custom Doc Format (Recipe Manager)&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;DAT405 Managing and Versioning Client Databases&lt;BR&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://steve.lasker.members.winisp.net/Presentations/TechEdEMEA08ScriptBasedDeployment.pptx" mce_href="http://steve.lasker.members.winisp.net/Presentations/TechEdEMEA08ScriptBasedDeployment.pptx"&gt;Powerpoint&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Demos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-size: 10.0pt; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/CreatingDatabaseSchemaInCode.zip"&gt;Creating &amp;amp; Managing Local Database Versions through Scripts&lt;/A&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-size: 10.0pt; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-size: 10.0pt; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/VersioningSchema.zip"&gt;Versioning Local Databases with Scripts when using Sync Services for ADO.NET&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Next year, Berlin.&amp;nbsp; Hope to make the trip.&lt;/P&gt;
&lt;P&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9125413" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author><category term="Code Samples" scheme="http://blogs.msdn.com/stevelasker/archive/tags/Code+Samples/default.aspx" /><category term="Presentations" scheme="http://blogs.msdn.com/stevelasker/archive/tags/Presentations/default.aspx" /><category term="SQL Server Compact Edition" scheme="http://blogs.msdn.com/stevelasker/archive/tags/SQL+Server+Compact+Edition/default.aspx" /></entry><entry><title>Heading to Tech Ed EMEA Barcelona</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2008/11/08/heading-to-tech-ed-emea-barcelona.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2008/11/08/heading-to-tech-ed-emea-barcelona.aspx</id><published>2008-11-09T02:19:00Z</published><updated>2008-11-09T02:19:00Z</updated><content type="html">&lt;P&gt;I always love going to Barcelona.&amp;nbsp; Sure, it's a great city, and loved riding motorcycles into the mountains last year with my wife; but it's just a great event to attend and present. It sort of like PDC and Tech Ed US wrapped into one event.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Anyway, I'll be giving two presentations this year, and attending a panel discussion.&amp;nbsp; After the sessions, I'll post the samples and the deck...&lt;/P&gt;
&lt;P&gt;&lt;B&gt;DAT314&amp;nbsp; Unlocking the Power of SQL Server Compact 3.5&lt;/B&gt;&amp;nbsp; &lt;BR&gt;Tuesday, November 11, 5:00-6:15pm &lt;/P&gt;
&lt;P&gt;With Visual Studio 2008, you can now embed SQL Server Compact as DLLs directly within your application. So you've seen the intro talks; now what? In this demo packed session we'll dig into the more advanced scenarios for how to take advantage of SQL Server Compact within your applications. Writing managed Stored Procedures; using SQL Server Compact as a custom document format; running the database directly from a DVD; and tips on maximizing performance - these are just some of the demos we'll show to maximize your end users productivity with Visual Studio 2008 and SQL Server Compact&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&amp;nbsp;DAT01-LNC&amp;nbsp; Tell Us Where it Hurts! SQL Server Product Feedback Discussion&amp;nbsp; &lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Thursday, November 13&amp;nbsp; 12:20-1:10&lt;/P&gt;
&lt;P&gt;Now that we've released SQL Server 2008, what would you like us to do next? SQL Server 2008 has great new developer functionality but we need you to tell us what we're missing. What are your pain-points as a developer and the scenarios that go with them? We may make some suggestions as to alternatives and workarounds, but primarily we'll take your feedback back to the SQL Server product group for analysis. After all, it is customer feedback that is the primary driver for getting new features into future versions of SQL Server. If you can't attend, please provide your feedback on SQL Server via the &lt;A href="http://connect.microsoft.com/sqlserver"&gt;http://connect.microsoft.com/sqlserver&lt;/A&gt; site.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;DAT405 Managing and Versioning Client Databases&lt;BR&gt;Friday, November 14 3:15 - 4:30&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Versioning a server database is challenging enough, but at least you can walk up to the Server. What do you do when you have thousands of desktop, laptop and mobile devices within your enterprise or deployed to consumers with several different versions of the app and database? In this session Steve will cover a strategy and implementation for versioning databases associated with your application that can be deployed via ClickOnce or any other based deployment technology.&lt;/P&gt;
&lt;P&gt;If you're attending, come on by...&lt;/P&gt;
&lt;P&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9054652" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author><category term="Presentations" scheme="http://blogs.msdn.com/stevelasker/archive/tags/Presentations/default.aspx" /><category term="SQLce" scheme="http://blogs.msdn.com/stevelasker/archive/tags/SQLce/default.aspx" /><category term="SQL Server Compact Edition" scheme="http://blogs.msdn.com/stevelasker/archive/tags/SQL+Server+Compact+Edition/default.aspx" /></entry><entry><title>Compact Tips &amp; Tricks at the Redmond We-Dig users group</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2008/11/01/compact-tips-tricks-at-the-redmond-we-dig-users-group.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2008/11/01/compact-tips-tricks-at-the-redmond-we-dig-users-group.aspx</id><published>2008-11-01T19:11:00Z</published><updated>2008-11-01T19:11:00Z</updated><content type="html">&lt;P&gt;This Wednesday, November 5th 2008, I'll be giving doing a local users group presentation that will cover some of the perf tips from PDC and some client database deployment tips for deploying and versioning local databases.&amp;nbsp; I'll be giving a talk on script based deployment at Tech Ed EMEA in 2 weeks, so this is a great chance to polish the demos.&lt;/P&gt;
&lt;P&gt;You can get more info at: &lt;A href="http://www.we-dig.org/default.aspx"&gt;http://www.we-dig.org/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Steve&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9028277" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author><category term="Presentations" scheme="http://blogs.msdn.com/stevelasker/archive/tags/Presentations/default.aspx" /></entry><entry><title>PDC 2008 - Embedding SQL Server Compact In Desktop And Device Applications</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2008/10/31/pdc-2008-embedding-sql-server-compact-in-desktop-and-device-applications.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2008/10/31/pdc-2008-embedding-sql-server-compact-in-desktop-and-device-applications.aspx</id><published>2008-11-01T01:23:00Z</published><updated>2008-11-01T01:23:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;This week I presented a session on SQL Server Compact.&amp;nbsp; &lt;A href="http://channel9.msdn.com/pdc2008/PC40/" mce_href="http://channel9.msdn.com/pdc2008/PC40/"&gt;Video Recording of the session is here&lt;/A&gt;.&amp;nbsp; The session focused on 3 main topics:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Why SQL Server Compact "changes the game" for how you might think about leveraging a database in your app&lt;/LI&gt;
&lt;LI&gt;Performance of SQL Server Compact&lt;/LI&gt;
&lt;LI&gt;Interesting scenarios you can use a local database when it's as easy as Compact.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;A class="" href="http://steve.lasker.members.winisp.net/Presentations/PDCEmbeddingCompact.pptx" mce_href="http://steve.lasker.members.winisp.net/Presentations/PDCEmbeddingCompact.pptx"&gt;Powerpoint of the session&amp;nbsp;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;For the "why", I mostly focused on the deployment aspects of SQL Server Compact, including the new 64bit deployment scenarios.&lt;/P&gt;
&lt;P&gt;For Performance, I took the previous per demo I've been showing and adding some more tests, including a comparison to SQL Server Express and inserts using the SqlCeResultSet.&amp;nbsp; In the performance section I focused mostly on the architecture differences between SQL Server and Compact.&amp;nbsp; SQL Server has a long running service and connection pooling.&amp;nbsp; Compact doesn't.&amp;nbsp; SQL Server caches query plans in the service, compact caches them in the SqlCeCommand object.&amp;nbsp; By understanding the architectural differences, you can get a dramatic performance benefit by just doing a few simple steps.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;A few performance comparisons&lt;/P&gt;
&lt;H2&gt;Connection Pooling&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Test 1:&lt;BR&gt;&lt;/STRONG&gt;Traditional inserts, following the standard model of open/close connections as fast as possible.&amp;nbsp; For this scenario, the developer assumes a connection pool, which is provided by the SqlClient (MDAC/SNAC) libraries installed on each users computer.&amp;nbsp; The problem is Compact doesn't have built in connection pooling, so for each operation, Compact loads and unloads the engine.&amp;nbsp; It's somewhat equivalent to attaching and detaching a SQL Server database (MDF), or starting/stopping the service.&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;public&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp; void&lt;/FONT&gt;InsertCustomer(&lt;FONT color=#0000ff&gt;int&lt;/FONT&gt;customerId, &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt;&lt;FONT size=+0&gt; customerName) {&lt;BR&gt;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;using&lt;/FONT&gt;&lt;FONT size=+0&gt; (SqlCeConnection conn = &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;new&lt;/FONT&gt;&lt;FONT size=+0&gt; SqlCeConnection(_connectionString)) {&lt;BR&gt;&amp;nbsp; &lt;FONT size=+0&gt;&amp;nbsp; &lt;/FONT&gt;SqlCeCommand cmd = conn.CreateCommand();&lt;BR&gt;&amp;nbsp; &lt;FONT size=+0&gt;&amp;nbsp; &lt;/FONT&gt;cmd.CommandText = Queries.&lt;/FONT&gt;&lt;FONT color=#2b91af&gt;Sprocs&lt;/FONT&gt;&lt;FONT size=+0&gt;.CustomerInsert;&lt;BR&gt;&amp;nbsp; &lt;FONT size=+0&gt;&amp;nbsp; &lt;/FONT&gt;cmd.Parameters.AddWithValue(&lt;/FONT&gt;&lt;FONT color=#a31515&gt;"Id"&lt;/FONT&gt;&lt;FONT size=+0&gt;, customerId);&lt;BR&gt;&amp;nbsp; &lt;FONT size=+0&gt;&amp;nbsp; &lt;/FONT&gt;cmd.Parameters.AddWithValue(&lt;/FONT&gt;&lt;FONT color=#a31515&gt;"Name"&lt;/FONT&gt;&lt;FONT size=+0&gt;, customerName);&lt;BR&gt;&amp;nbsp; &lt;FONT size=+0&gt;&amp;nbsp; &lt;/FONT&gt;conn.Open();&lt;BR&gt;&amp;nbsp;&lt;FONT size=+0&gt;&amp;nbsp; &lt;/FONT&gt;&amp;nbsp;cmd.ExecuteNonQuery();&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Test 2:&lt;BR&gt;&lt;/STRONG&gt;In Test 2, I simply modified the connection string for SQL Server to disable Connection Pooling (&lt;FONT color=#a31515&gt;pooling=false&lt;/FONT&gt;) Figured it wasn't fair to stop and start the SQL Service or attach/detach.&amp;nbsp; In reality, what we're really comparing is the cost of creating connections.&amp;nbsp; For SQL Server, we're simply establishing the networking stack, which is a bit costly.&amp;nbsp; For Compact, we're actually loading the engine.&lt;/P&gt;
&lt;P style="HEIGHT: 38px"&gt;&lt;STRONG&gt;Test 3:&lt;/STRONG&gt;&lt;BR&gt;Here I'm simply keeping the SqlCeConnection open.&amp;nbsp; Since Compact doesn't have connection pooling, it means I do need to keep the connection open alive and open.&lt;/P&gt;
&lt;P&gt;Table showing different tests, and the number of &lt;STRONG&gt;&lt;EM&gt;inserts per second.&amp;nbsp; &lt;/EM&gt;&lt;/STRONG&gt;&lt;BR&gt;Note: This isn't meant to be a defacto performance benchmark.&amp;nbsp; Simply an example of how the archtiectural differences are targeted to different scenarios.&amp;nbsp; Your test will vary based on CPU power, RAM, types of data, speed of hard drive, humidity in the air, oxidation on your fingernails and pins within the mother board, ...&lt;/P&gt;
&lt;TABLE class=style3 style="WIDTH: 100%" class="style3"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=style9 class="style9"&gt;Test #&lt;/TD&gt;
&lt;TD class=style9 class="style9"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD class=style9 class="style9"&gt;SQL Server&lt;/TD&gt;
&lt;TD class=style9 class="style9"&gt;SQL Server Compact&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=style9 class="style9"&gt;1&lt;/TD&gt;
&lt;TD class=style9 class="style9"&gt;Default Open/Close&lt;/TD&gt;
&lt;TD class=style9 class="style9"&gt;&lt;SPAN class=style1&gt;&lt;FONT style="BACKGROUND-COLOR: #00ff00"&gt;810&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=style9 class="style9"&gt;6&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=style9 class="style9"&gt;2&lt;/TD&gt;
&lt;TD class=style9 class="style9"&gt;Open/Close w/o Connection Pooling&lt;/TD&gt;
&lt;TD class=style9 class="style9"&gt;122&lt;/TD&gt;
&lt;TD class=style9 class="style9"&gt;6&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=style9 class="style9"&gt;3&lt;/TD&gt;
&lt;TD class=style9 class="style9"&gt;Open/Close w/Connection Pooling&lt;/TD&gt;
&lt;TD class=style9 class="style9"&gt;810&lt;/TD&gt;
&lt;TD class=style9 class="style9"&gt;&lt;SPAN class=style1&gt;&lt;FONT style="BACKGROUND-COLOR: #00ff00"&gt;2,839&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;In the above table, we can already start to see where Compact can jump ahead, quite significantly.&amp;nbsp; When disabling Connection Pooling, SQL Server drops from 810 inserts/second to 122.&amp;nbsp; While Compact jumps from 6 inserts/second to 2,839.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 823px; HEIGHT: 484px" height=484 src="http://steve.lasker.members.winisp.net/Blog/Images/ExpressCompactConnPooling.jpg" width=823 mce_src="http://steve.lasker.members.winisp.net/Blog/Images/ExpressCompactConnPooling.jpg"&gt;&lt;/P&gt;
&lt;H2&gt;Query Plan Caching&lt;/H2&gt;
&lt;P&gt;The next area is comparing Command Caching between Compact and SQL Server.&amp;nbsp; SQL Server caches query plans within the engine.&amp;nbsp; This means that different threads, processes or completely different clients can benefit from each other.&amp;nbsp; It also means the server is holding onto more resources, just in case someone might want them.&amp;nbsp; This is where we really start to see the differences between Compact and Express.&amp;nbsp; Compact, being an embedded database, optimizes for resource usage.&amp;nbsp; It's not that you can't cache query plans, it's just that you, as the developer need to do this as it's not "by default".&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Test 1:&lt;BR&gt;Query Plan Caching w/Parameterized queries.&amp;nbsp; I didn't take the time to invalidate the cache for SQL Server each time, so I'll just simply show that Inserts/Second take advantage of Command Caching as well&lt;/P&gt;
&lt;TABLE class=style3 style="WIDTH: 100%" class="style3"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=style8 class="style8"&gt;Test #&lt;/TD&gt;
&lt;TD class=style8 class="style8"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD class=style8 class="style8"&gt;SQL Server&lt;/TD&gt;
&lt;TD class=style8 class="style8"&gt;SQL Server Compact&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=style8 class="style8"&gt;1&lt;/TD&gt;
&lt;TD class=style8 class="style8"&gt;Default, inserts per se&lt;/TD&gt;
&lt;TD class=style8 class="style8"&gt;&lt;SPAN class=style1&gt;&lt;FONT style="BACKGROUND-COLOR: #00ff00"&gt;3859&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=style8 class="style8"&gt;3142&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=style8 class="style8"&gt;2&lt;/TD&gt;
&lt;TD class=style8 class="style8"&gt;With Query Plan Caching&lt;/TD&gt;
&lt;TD class=style8 class="style8"&gt;3859&lt;/TD&gt;
&lt;TD class=style8 class="style8"&gt;&lt;SPAN class=style1&gt;&lt;FONT style="BACKGROUND-COLOR: #00ff00"&gt;6224&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;IMG style="WIDTH: 689px; HEIGHT: 321px" height=321 src="http://steve.lasker.members.winisp.net/Blog/Images/ExpressCompactQueryPlanCaching.jpg" width=689 mce_src="http://steve.lasker.members.winisp.net/Blog/Images/ExpressCompactQueryPlanCaching.jpg"&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SQLcePerformance.zip" mce_href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SQLcePerformance.zip"&gt;Source code for the Performance Test Harness&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Trace Listener&lt;/H2&gt;
&lt;P&gt;To monitor what's happening in the field, I demonstrated how you can use a SqlCeTraceListener with sync to capture errors, KPIs or other interesting data in the field, and bring it "home"&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SqlServerCeTraceListener.zip" mce_href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SqlServerCeTraceListener.zip"&gt;Source code for the SqlCeTraceListener&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Using SQL Server Compact as a Doc format&lt;/H2&gt;
&lt;P&gt;&lt;A class="" href="http://steve.lasker.members.winisp.net/Demos/SQLce35/RecipeManager.zip" mce_href="http://steve.lasker.members.winisp.net/Demos/SQLce35/RecipeManager.zip"&gt;Source code&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;As always, PDC was a blast talking with customers.&amp;nbsp; Lots of great sessions, and too many to list.&amp;nbsp; Luckily, you can see them all at &lt;A href="http://www.microsoftpdc.com/" mce_href="http://www.microsoftpdc.com/"&gt;http://www.microsoftpdc.com/&lt;/A&gt; Gotta run to a Halloween party, but wanted to get some info up quickly.&lt;/P&gt;
&lt;P&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9027411" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author><category term="Code Samples" scheme="http://blogs.msdn.com/stevelasker/archive/tags/Code+Samples/default.aspx" /><category term="Presentations" scheme="http://blogs.msdn.com/stevelasker/archive/tags/Presentations/default.aspx" /><category term="SQLce" scheme="http://blogs.msdn.com/stevelasker/archive/tags/SQLce/default.aspx" /><category term="SQL Server Compact Edition" scheme="http://blogs.msdn.com/stevelasker/archive/tags/SQL+Server+Compact+Edition/default.aspx" /></entry><entry><title>Privately Deploying SQL Server Compact with the ADO.NET Entity Provider</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2008/10/22/privately-deploying-sql-server-compact-with-the-ado-net-entity-provider.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2008/10/22/privately-deploying-sql-server-compact-with-the-ado-net-entity-provider.aspx</id><published>2008-10-22T04:03:00Z</published><updated>2008-10-22T04:03:00Z</updated><content type="html">&lt;LINK rel=stylesheet type=text/css href="http://manoli.net/csharpformat/csharp.css"&gt;
&lt;P mce_keep="true"&gt;When privately deploying SQL Server Compact you will need to take a few extra steps if you wish to use the ADO.NET Entity Model.&amp;nbsp; Here's some info on how to do it.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;B&gt;Why the extra steps?&lt;BR&gt;&lt;/B&gt;The ADO.NET Entity model was designed as a mid-tier solution.&amp;nbsp; In the mid tier, IT owns the box and they can typically install the software needed.&amp;nbsp; On the client, particularly in corporate environments, the end user doesn't have permission to "install" software.&amp;nbsp; The Entity Framework was also designed to leverage the provider agnostic programming model.&amp;nbsp; Since the System.Data.SqlClient.dll is GAC'd with the .NET Framework, and the DB Provider model was designed around machine.config, a number of assumptions were made.&amp;nbsp; However, no fear, you can add new DbProvider entries, but it may not be as obvious, or what you think works may only work in certain situations.&amp;nbsp; I'll explain as I walk through the steps.&lt;/P&gt;
&lt;P mce_keep="true"&gt;To make this clear, I'll walk through the scenario from Create New Project.&amp;nbsp; If you already have a project that privately deploys SQL Server Compact, jump ahead to &lt;STRONG&gt;Adding the Entity Provider entry&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;Create New Project&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;BR&gt;&lt;/B&gt;Before we jump into the deployment details, let's build a quick app as a baseline.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Create New Project 
&lt;OL&gt;
&lt;LI&gt;We'll start by creating a new WPF project. We'll use C#, but VB is just as well. To follow along, I've named it: &lt;B&gt;CompactEntityProviderPrivateDeployment&lt;/B&gt;&lt;BR&gt;Yes, this works with WinForms as well, but I'll never really learn WPF if I keep using my old habits of WinForms...&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;Add a new Local Database 
&lt;OL&gt;
&lt;LI&gt;Add a new item to the project, and select Local Database. I've named it: &lt;B&gt;LocalData.sdf&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;Hit cancel on the Choose Your Database Objects wizard. &lt;BR&gt;This is the default wizard for DataSets and we're focusing on the Entity Framework here...&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;Add a new table&lt;BR&gt;Rather than do yet another Northwind sample, we'll create a single table database. 
&lt;OL&gt;
&lt;LI&gt;Double click the &lt;B&gt;LocalData.sdf&lt;/B&gt; file to open the database within Server Explorer&lt;/LI&gt;
&lt;LI&gt;Right click on the Tables node and select &lt;B&gt;Create Table&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;Name the table &lt;B&gt;Customers&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;Add a column: Name = Id, DataType = nChar, Length = 10, Allow Nulls = No, Primary Key = Yes&lt;/LI&gt;
&lt;LI&gt;Add a column: Name = CompanyName&lt;/LI&gt;
&lt;LI&gt;Press Ok, to complete the creation of the table&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;Add some data 
&lt;OL&gt;
&lt;LI&gt;Open the Tables node&lt;/LI&gt;
&lt;LI&gt;Right click and select "Show Table Data"&lt;/LI&gt;
&lt;LI&gt;Add a few entries (1, Acme | 2, Widgets | 2, Microsoft | ...)&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;Add the Entity Model to program against 
&lt;OL&gt;
&lt;LI&gt;Right Click on the project and select &lt;B&gt;Add New Item&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;Select &lt;B&gt;ADO.NET Entity Model&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;Name the item: &lt;B&gt;LocalData.edmx&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;Choose &lt;B&gt;Generate from Database&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;Accept the default for LocalData.sdf, click next&lt;/LI&gt;
&lt;LI&gt;Check the Customers table and press finish&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;Viewing the data on the WPF form &lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;Drag a ListBox to the Window1.xaml designer&lt;/LI&gt;
&lt;LI&gt;Double click the title bar of the window to create the Window_Loaded event&lt;/LI&gt;
&lt;LI&gt;Add a class instance of the Entity model outside of the Window_Loaded event&lt;FONT color=#0000ff size=4&gt;&lt;BR&gt;&lt;SPAN class=style1&gt;&lt;FONT color=#808080&gt;public&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&lt;SPAN class=style1&gt;&lt;FONT size=4&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=4&gt;&lt;SPAN class=style1&gt;partial&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN class=style1&gt;&lt;FONT size=4&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=4&gt;&lt;SPAN class=style1&gt;class&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN class=style1&gt;&lt;FONT size=4&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=4&gt;&lt;SPAN class=style1&gt;Window1&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN class=style1&gt;&lt;FONT size=4&gt; : &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=4&gt;&lt;FONT color=#808080&gt;&lt;SPAN class=style1&gt;Window {&lt;/SPAN&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;SPAN class=style2&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT color=#2b91af&gt;&lt;SPAN class=style2&gt;LocalDataEntities&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT class=style2&gt; _localDataContext;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;In the Window_Loaded event, within a Try/Catch block, instance the Entity Model and load the listbox&lt;BR&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue" class=style2&gt;&lt;FONT size=3&gt;private&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 14pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'"&gt;&lt;SPAN style="COLOR: blue" class=style2&gt;&lt;FONT size=3&gt;void&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 14pt"&gt; &lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'" class=style2&gt;&lt;FONT size=3&gt;Window_Loaded(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR: #2b91af"&gt;RoutedEventArgs&lt;/SPAN&gt; e) {&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'" class=style2&gt;&lt;FONT size=3&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&lt;/SPAN&gt; {&lt;BR&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_localDataContext = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;LocalDataEntities&lt;/SPAN&gt;();&lt;BR&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.listBox1.ItemsSource = &lt;SPAN style="COLOR: blue"&gt;from&lt;/SPAN&gt; c &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; _localDataContext.Customers &lt;SPAN style="COLOR: blue"&gt;select&lt;/SPAN&gt; c;&lt;BR&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.listBox1.DisplayMemberPath = &lt;SPAN style="COLOR: #a31515"&gt;"Name"&lt;/SPAN&gt;;&lt;BR&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;Exception&lt;/SPAN&gt; ex) {&lt;BR&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;MessageBox&lt;/SPAN&gt;.Show(ex.ToString());&lt;BR&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 14pt"&gt;}&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;Run the app&lt;/LI&gt;
&lt;LI&gt;All should work fine for now and your app should look as follows:&lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt;
&lt;P&gt;&lt;B&gt;&lt;IMG style="WIDTH: 200px; HEIGHT: 195px" src="http://steve.lasker.members.winisp.net/Blog/Images/EntityPrivateDeployment/EFAppStep1.jpg" width=200 height=195 mce_src="http://steve.lasker.members.winisp.net/Blog/Images/EntityPrivateDeployment/EFAppStep1.jpg"&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Deploying the SQL Server Compact Runtime&lt;BR&gt;&lt;/B&gt;In the above app, we're working in our development environment with all the latest gadgets.&amp;nbsp; So of course everything works fine, but what about your end users?&amp;nbsp; Do they have everything you just used?&amp;nbsp; While ClickOnce can help end users Pre-Requisite the additional components, this assumes end users have the rights to install software.&amp;nbsp; With a focus on security, Microsoft has worked hard to convinced customers to lock down their PCs.&amp;nbsp; Which means that unless IT does the rollout, you may not have what you need.&amp;nbsp; If your one of those "bottom line affecting" apps that have IT sponsorship, you may be fine, and you can skip this section.&amp;nbsp; If your one of those development/product teams that are working "against the grain" for the corporate mandate that "all apps must be web apps", or you simply want to enable a clean "install" experience for your app, you can take the following steps to assure your apps will "just work".&amp;nbsp; If SQL Server Compact is centrally installed, great.&amp;nbsp; The central version will be used.&amp;nbsp; If there is no centrally installed version, or you need a newer version that what IT is ready to push out, no problem, just follow these steps.&amp;nbsp; If/when IT catches up, the .NET Loader will simply switch to the central version.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;SPAN&gt;&lt;STRONG&gt;Add the Assembly References&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;/FONT&gt;View References for your project - notice System.Data.SqlServerCe.dll isn't listed. This is because providers are loaded by the Entity framework at runtime based on the connection string in App.config. We'll need to manually add the references for VS to deploy these dlls. 
&lt;OL&gt;
&lt;LI&gt;Choose &lt;B&gt;Add Reference&lt;/B&gt; and select &lt;B&gt;System.Data.SqlServerCe&lt;/B&gt; from the first &lt;B&gt;.NET&lt;/B&gt; tab and press Ok&lt;/LI&gt;
&lt;LI&gt;Choose &lt;B&gt;Add Reference&lt;/B&gt;, but this time choose &lt;B&gt;Browse&lt;/B&gt; to find the Entity dll. &lt;BR&gt;It's not listed by default as it was assumed the Entity Framework would only be used when centrally installed.&lt;BR&gt;Browse to: &lt;B&gt;C:\Program Files\Microsoft SQL Server Compact Edition\v3.5&lt;/B&gt; and select &lt;B&gt;System.Data.SqlServerCe.Entity.dll&lt;/B&gt;&lt;BR&gt;Note: on 64bit machines, it doesn't matter if you grab the Entity dll from the 32 or 64bit directory as the same "platform neutral" dll is used for both&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;Change the managed references to be "local"&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; 
&lt;OL&gt;
&lt;LI&gt;In the References node, select &lt;B&gt;System.Data.SqlServerCe&lt;/B&gt; and then select the property grid. Change &lt;B&gt;Copy Local = True&lt;/B&gt;. This tells VS to copy the dll to the output directory, even though it's GACd on your development computer. When VS builds your project, it will copy the dll to your output directory, but it will also add it to the ClickOnce Application Files list.&lt;/LI&gt;
&lt;LI&gt;Change the &lt;B&gt;System.Data.SqlServerCe.Entity&lt;/B&gt; reference to &lt;B&gt;Copy Local = True&lt;/B&gt; as well&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;SPAN&gt;&lt;STRONG&gt;Add the native runtime for SQL Server Compact&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;/FONT&gt;Similar to the .NET Framework, SQL Server Compact achieves its speed, reliability and compact size by using native code for the storage engine and query processor. As of 3.5 SP1, Compact added 64bit support. To avoid your end users from having to figure out whether they have 32 or 64bit machines, only to then choose a 32 or 64bit install, you can include both the 32 and 64bit runtimes directly within your application so end users can get a single "install/copy" of your app and it will "just work" regardless of their bit alignment &lt;/LI&gt;&lt;/OL&gt;
&lt;OL&gt;
&lt;LI&gt;To add the 32bit runtime: Add a folder named &lt;B&gt;X86&lt;/B&gt; to your project&lt;/LI&gt;
&lt;LI&gt;Select Add Existing Item and navigate to: &lt;B&gt;C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.5&lt;/B&gt;&lt;BR&gt;&lt;I&gt;Note: if your client is a 32bit client, simply remove the (x86) portion of the directory:&lt;/I&gt;&lt;/LI&gt;
&lt;LI&gt;Using CTRL + Click, select &lt;B&gt;sqlcese35.dll, sqlceqp35.dll, sqlceme35.dll and sqlcecompact35.dll&lt;/B&gt;, then choose the little down arrow on the &lt;B&gt;Add&lt;/B&gt; button and choose &lt;B&gt;Add As Link&lt;BR&gt;&lt;/B&gt;This&lt;B&gt; &lt;/B&gt;will&lt;B&gt; &lt;/B&gt;make sure any updated installed on your client will be added to the project the next time you build&lt;BR&gt;&lt;IMG style="WIDTH: 965px; HEIGHT: 663px" src="http://steve.lasker.members.winisp.net/Blog/Images/EntityPrivateDeployment/AddingNativeEngine.jpg" width=965 height=663 mce_src="http://steve.lasker.members.winisp.net/Blog/Images/EntityPrivateDeployment/AddingNativeEngine.jpg"&gt;&lt;/LI&gt;
&lt;LI&gt;Select the 4 files within Solution Explorer and select Properties&lt;/LI&gt;
&lt;LI&gt;Change &lt;B&gt;Copy To Output Directory = Copy If Newer&lt;/B&gt;&lt;BR&gt;Similar to the .NET References above, this tells VS to verify the date/time stamp at build time and only spend time copying the files if the source is newer than the output directory&lt;BR&gt;&lt;IMG style="WIDTH: 550px; HEIGHT: 304px" src="http://steve.lasker.members.winisp.net/Blog/Images/EntityPrivateDeployment/CopyToOutputDirectory.jpg" width=550 height=304 mce_src="http://steve.lasker.members.winisp.net/Blog/Images/EntityPrivateDeployment/CopyToOutputDirectory.jpg"&gt;&lt;/LI&gt;
&lt;LI&gt;Assuming you have a 64bit machine with &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=DC614AEE-7E1C-4881-9C32-3A6CE53384D9&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=DC614AEE-7E1C-4881-9C32-3A6CE53384D9&amp;amp;displaylang=en"&gt;SQL Server Compact 3.5 SP1 64bit&lt;/A&gt; installed you can add the 64bit binaries as well &lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;Add a folder named &lt;B&gt;AMD64&lt;/B&gt; to your project&lt;/LI&gt;
&lt;LI&gt;Select Add Existing Item and navigate to: &lt;B&gt;C:\Program Files\Microsoft SQL Server Compact Edition\v3.5&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;Just as above, using CTRL + Click, select &lt;B&gt;sqlcese35.dll, sqlceqp35.dll, sqlceme35.dll and sqlcecompact35.dll&lt;/B&gt;, then choose the little down arrow on the &lt;B&gt;Add&lt;/B&gt; button and choose &lt;B&gt;Add As Link&lt;/B&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;&lt;SPAN&gt;&lt;STRONG&gt;Remove the ClickOnce Pre Requisites&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;/FONT&gt;Now that you've included SQL Server Compact with your app, you no longer need the ClickOnce prerequisites. The Pre-Reqs require Admin rights to install, and this has been a blocker for many companies that have followed Microsoft's advice to lock down their computers. &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Right click on the project and select &lt;B&gt;Properties. &lt;/B&gt;You can also double click &lt;B&gt;Project Properties&lt;/B&gt; for C# projects, or &lt;B&gt;My Project&lt;/B&gt; for VB projects&lt;BR&gt;&lt;IMG style="WIDTH: 779px; HEIGHT: 382px" src="http://steve.lasker.members.winisp.net/Blog/Images/EntityPrivateDeployment/PreReqsButton.jpg" width=779 height=382 mce_src="http://steve.lasker.members.winisp.net/Blog/Images/EntityPrivateDeployment/PreReqsButton.jpg"&gt;&lt;/LI&gt;
&lt;LI&gt;Uncheck everything, but .NET Framework 2.0 as this will give you the cleanest Publish page. &lt;BR&gt;Unless your clients have admin rights, none of the other pre-reqs will work anyways, so you might as well clean up the choices they can actually make. By choosing .NET FX 2.0, VS will generate some javascript that will collapse the region prompting installation of the .NET Framework.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Where are we?&lt;/STRONG&gt;&lt;BR&gt;At this point, we have a basic WPF app with some local data.&amp;nbsp; We've including the SQL Server Compact runtime so we don't have to worry about whether it's installed or not. Are we ready to publish the app for ClickOnce installation - nope, not yet.&amp;nbsp; This is the meat of the heading, the reason I've written all the above text.&amp;nbsp; Just in case you don't believe me, try publishing with ClickOnce, shutting down VS, uninstalling SQL Server Compact (both 32 or 64), or simply installing on a machine without Compact installed.&amp;nbsp; You'll notice you get a failure to load data as it can't resolve the Entity Provider.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=blue&gt;Main Purpose of This Post&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Adding the Entity Provider Entry&lt;BR&gt;&lt;/B&gt;As I noted above, the Entity Framework was initial designed for mid tier solutions.&amp;nbsp; This assumes that everything is centrally installed for all services to leverage.&amp;nbsp; However, on clients, we may need to add additional functionality to the application that doesn't ship in the .NET Framework.&amp;nbsp; When SQL Server Compact is centrally installed, the MSI will configure an entry into Machine.config.&amp;nbsp; On clients that don't have SQL Server Compact centrally installed, you'll need to add the entry for the Provider Factory to find SQL Server Compact.&amp;nbsp; But, you can't add it to Machine.config, because that's a central resource which requires Admin rights.&amp;nbsp; Instead, we can add it to app.config, but there is a catch.&amp;nbsp; It turns out database people (ADO.NET team) think about data integrity and constraints as a religion &amp;lt;g&amp;gt;.&amp;nbsp; If you have a machine.config entry and then attempt to add an app.config entry the runtime will throw a constraint violation.&amp;nbsp; We've discussed changing this in the future to simply merge the values (DataTable.Merge) to update any "primary keys" with the new value, but for SQL Server Compact 3.5 and FX 3.5, we need to do a little workaround.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Grab the XML fragment for the Compact DbProvider&lt;/LI&gt;
&lt;LI&gt;Open &lt;B&gt;machine.config&lt;/B&gt; from: &lt;B&gt;C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;Search for SQL Server Compact&lt;/LI&gt;
&lt;LI&gt;Copy the entire XML fragment for &lt;FONT size=3&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN class=style2&gt;&amp;lt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;&lt;SPAN class=style2&gt;system.data&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN class=style2&gt;&amp;gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Open app.config in your client app.&amp;nbsp; &lt;BR&gt;&lt;I&gt;Note You must edit the hosting exe as dll's don't load unique app.config files.&amp;nbsp; We recognize that most apps do their data access in dlls, and often the developer building the exe portion of the app shouldn't know or care what's in the dlls of the app, so this is why we know this is a bit painful and would like to find a better solution.&amp;nbsp; But, this is where we are, so, blogging on...&lt;/I&gt; 
&lt;LI&gt;Paste the XML fragment from machine.config, but trim it down to the following.&amp;nbsp; Note, I've greyed out the other content that you likely have in app.config to show the positioning within the file: &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;FONT color=grey&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;BR&gt;&amp;lt;configuration&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;connectionStrings&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="LocalDataEntities" connectionString="metadata=res://*/LocalData.csdl|res://*/LocalData.ssdl|res://*/LocalData.msl;provider=System.Data.SqlServerCe.3.5;provider connection string=&amp;amp;quot;Data Source=|DataDirectory|\LocalData.sdf&amp;amp;quot;" providerName="System.Data.EntityClient" /&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/connectionStrings&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=grey&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: #a31515; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;system.data&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: #a31515; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;DbProviderFactories&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: #a31515; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;remove&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: red; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;invariant&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;FONT color=#000000&gt;"&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;System.Data.SqlServerCe.3.5&lt;/SPAN&gt;&lt;FONT color=#000000&gt;"&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;remove&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: #a31515; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;add&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: red; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;FONT color=#000000&gt;"&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;Microsoft SQL Server Compact Data Provider&lt;/SPAN&gt;&lt;FONT color=#000000&gt;"&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: red; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;invariant&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;FONT color=#000000&gt;"&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;System.Data.SqlServerCe.3.5&lt;/SPAN&gt;&lt;FONT color=#000000&gt;"&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: red; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;description&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;FONT color=#000000&gt;"&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;.NET Framework Data Provider for Microsoft SQL Server Compact&lt;/SPAN&gt;&lt;FONT color=#000000&gt;"&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: red; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;type&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;FONT color=#000000&gt;"&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91&lt;/SPAN&gt;&lt;FONT color=#000000&gt;"&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: #a31515; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;DbProviderFactories&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: #a31515; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;system.data&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: #a31515; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;configuration&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt; mso-bidi-font-size: 11.0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;Notice two attributes for name and invariant.&amp;nbsp; It turns out invariant is actually the "unique constraint/name".&lt;BR&gt;If we were to run the app at this point, with Compact centrally installed, the app would fail to load with a duplicate config entry.&amp;nbsp; It's a little vague as the exception is a bit buried in the inner exceptions of the top level exception.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;SPAN&gt;&lt;STRONG&gt;Publish the application to see where we are&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;/FONT&gt;You're now finally ready to ClickOnce publish your application, with SQL Server Compact and the Entity Provider included 
&lt;OL&gt;
&lt;LI&gt;Right click on the project and choose "Publish..."&lt;/LI&gt;
&lt;LI&gt;Enter an HTTP address for a webserver you have permissions to: &lt;B&gt;http://localhost/CompactEntityProvider/&lt;/B&gt;&lt;BR&gt;If you've got Vista and don't know the additional settings, send me a comment below and I'll either add the steps, or point you to &lt;A href="http://blogs.msdn.com/saurabh/" mce_href="http://blogs.msdn.com/saurabh/"&gt;Saurabh Pant&lt;/A&gt; for the steps&lt;/LI&gt;
&lt;LI&gt;Finish the wizard and you should now have a default web page with the ability to Install your app&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;SPAN&gt;&lt;STRONG&gt;Install the app&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;/FONT&gt;Before doing anything else, install the app and let it run. If you've placed the try/catch block around the instancing/loading of the entity model, &lt;B&gt;you should get an exception&lt;/B&gt;&lt;BR&gt;The exception is because of those darn DBA types that make sure things are accurate and don't want duplicate data &amp;lt;g&amp;gt;. So, how to work around this? We've played with a few things such as changing the invariant name to something unique, but that means you must correlate the change in the connection strings that VS automatically generates for you. Since this is just too easy to mess up, we've come up with the following recommendation:&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;SPAN&gt;&lt;STRONG&gt;Resolving the duplicates&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;/FONT&gt;The problem is essentially that we know we need an Entity provider for SQL Server Compact, but we don't know if one is already on the machine. Turns out one of the easiest ways to resolve duplicate data is to delete one. The Config framework does provide a nice way to do this. 
&lt;OL&gt;
&lt;LI&gt;In the app.config file, add the collored &amp;lt;remove...&amp;gt; XML fragment:&lt;/LI&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 14pt" class=style1&gt;&amp;lt;DbProviderFactories&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; FONT-SIZE: 14pt"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 14pt"&gt;&lt;BR class=style1&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; FONT-SIZE: 14pt"&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: #a31515; FONT-SIZE: 14pt"&gt;remove&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; FONT-SIZE: 14pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: red; FONT-SIZE: 14pt"&gt;invariant&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; COLOR: blue; FONT-SIZE: 14pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 14pt"&gt;"&lt;SPAN style="COLOR: blue"&gt;System.Data.SqlServerCe.3.5&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;remove&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 14pt"&gt;&lt;SPAN class=style1&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 14pt" class=style1&gt;&amp;lt;add name=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 14pt"&gt;"&lt;SPAN class=style1&gt;Microsoft SQL Server Compact Data Provider&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;This simple line of XML tells the ADO.NET Provider Factory to first remove any entries for this invariant name.&amp;nbsp; It's only for this particular app instance, so you're not affecting any other apps on the box.&amp;nbsp; If it's not there, no problem, database people know how to remove things without failing.&amp;nbsp; &lt;/P&gt;
&lt;LI&gt;Republish and install the app 
&lt;OL&gt;
&lt;LI&gt;Right click on the project and choose "Publish..." again. This time, just click finish as you should have everything configured properly&lt;/LI&gt;
&lt;LI&gt;Click Install, and voila, your app should now be running just fine.&lt;BR&gt;Regardless of a central install, without having to create unique invariant names, you now have Compact running within your app&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;B&gt;The real test&lt;BR&gt;&lt;/B&gt;Of course the real test is to deploy the app to a machine that doesn't have Compact installed.&amp;nbsp; Now the Entity framework does require .NET FX 3.5 SP1, so your clients do need all those goody bits.&amp;nbsp; But, you might get IT roll out the .NET Framework.&amp;nbsp; It would be great to get them to deploy Compact as well, but IT folks get a little scared about deploying a SQL Server product to all their clients.&amp;nbsp; Not sure why.&amp;nbsp; Maybe we just need to wait a few years ‘till the new guys replace the old ones that remember...&lt;/P&gt;
&lt;P&gt;To figure out if your app was loading Compact privately, I've written a lame (UI) about box that you can add to your project to see.&amp;nbsp; The entire source to this walkthrough is below.&lt;/P&gt;
&lt;P&gt;Sample &lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/CompactEntityProviderPrivateDeployment.zip" mce_href="Http://steve.lasker.members.winisp.net/Demos/SQLce35/CompactEntityProviderPrivateDeployment.zip"&gt;Sourcecode&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope this post was helpful.&amp;nbsp; Would love to hear how many of you are using the Entity Framework with Compact.&amp;nbsp; How many have been able to centrally deploy Compact, or you've gone the private deployment route.&amp;nbsp; Was it because of the Admin rights issue, packaging of your app, or something else.&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Steve&lt;/P&gt;&lt;/LI&gt;
&lt;OL&gt;&lt;/OL&gt;&lt;/SPAN&gt;&lt;/OL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9010588" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author></entry><entry><title>Evolution or Revolution for moving to offline architectures</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2008/10/18/evolution-or-revolution-for-moving-to-offline-architectures.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2008/10/18/evolution-or-revolution-for-moving-to-offline-architectures.aspx</id><published>2008-10-18T03:15:00Z</published><updated>2008-10-18T03:15:00Z</updated><content type="html">&lt;P&gt;There's been a lot of talk, momentum and questioning for where and how occasionally connected designs fit into the application landscape.&amp;nbsp; There have been a lot of questions for "if and how" developers can take their existing apps "offline".&amp;nbsp; There have been a number of efforts for enabling offline apps and some longer term plans.&amp;nbsp; In VS 2008 (Orcas) we introduced Sync Services for ADO.NET as a developer focused way to synchronize data.&amp;nbsp; The roadmap continues with the Microsoft Sync Framework releases.&amp;nbsp; We've started to show "Astoria Offline" as a means to enable sync over REST based HTTP protocols enabling more generic services.&amp;nbsp; But do any of these "solve the problem".&amp;nbsp; It's been a while since I've done a brain dump on some thoughts related to the evolution vs. revolution of app models, so what better way to dump thoughts than a blogicle.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;B&gt;Can you take your current app and make it offline?&lt;BR&gt;&lt;/B&gt;The reality is "it depends".&amp;nbsp; There are so many app designs, it's hard to say definitely what works and what doesn't.&amp;nbsp; There are some well established things that have worked and haven't, but it's not fair to say these apply 100% of the time.&amp;nbsp; One size doesn't fit all.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Intercept/fall back&lt;BR&gt;&lt;/B&gt;Do you go with the intercept model?&amp;nbsp; When online and connected, the app communicates directly to the service.&amp;nbsp; (Note I'm using "service" here to represent any remote source.&amp;nbsp; It could be a database "service" a Web Service, a WCF service, or some other API that's only available when your device is connected to "the network").&amp;nbsp; When the network falls away, the app &lt;B&gt;"falls back"&lt;/B&gt; to a local "cache".&lt;/P&gt;
&lt;P&gt;This is generally a bad (opinion), or complicated (fact) model.&amp;nbsp; This assumes one of two things.&amp;nbsp; Either your user knows they're going offline and they synchronize before they yank the cable or they predict when the network fails.&amp;nbsp; Of course the application can constantly synchronizing data in the background.&amp;nbsp; Crystal ball? When do you really know or have time to sync beforehand?&amp;nbsp; You're working in your office, and Outlook pops up reminder.&amp;nbsp; Or worse, you get an IM or Text message asking "where are you".&amp;nbsp; You grab your laptop and run... oh, wait, you forgot to sync.&amp;nbsp; Do you have the info needed for the meeting?&amp;nbsp; &lt;/P&gt;
&lt;P&gt;For the background sync, one of two things could be happening.&amp;nbsp; When you "fall offline", your view of data suddenly changes because your local copy is so out of date compared to the data you were just looking at, or your synching often enough that there's no difference, asking why you're even trying to work online in the first place.&amp;nbsp; Or, you've effectively created a denial of service attack by asking, has anything changed, has anything changed, has anything changed?&lt;/P&gt;
&lt;P&gt;Outlook 2003 (I think that was the version) tried this fallback model.&amp;nbsp; It was awful.&amp;nbsp; You're sitting in your office, writing an email, looking at your inbox.&amp;nbsp; The network goes down, your inbox view completely changes, or worse Outlook froze, and you lost that message you were carefully wording.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Always work locally&lt;BR&gt;&lt;/B&gt;In this model, you synchronize everything you need, and make all your interactions against the local store.&amp;nbsp; This is sort of the Outlook model today (Outlook 2007).&amp;nbsp; There are equal problems here.&amp;nbsp; Is it realistic to have all the data locally?&amp;nbsp; Even Outlook data can be significantly large, and that's clearly your data.&amp;nbsp; What about public folders?&amp;nbsp; By default, these are only available online.&amp;nbsp; If you're online, they work.&amp;nbsp; If you're not, they don't.&amp;nbsp; Fairly straight forward; but what about historical data for all the products the company has shipped?&amp;nbsp; What about your list of customers, or the current list of stocks and their prices?&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The reality is data volume is growing at an exponential rate.&amp;nbsp; Storage continues to get cheaper and faster.&amp;nbsp; 1TB disks and Solid State storage are becoming mainstream.&amp;nbsp; The problem is while connectivity is getting better; the bandwidth isn't increasing at the same rate.&amp;nbsp; And, even as it does, is it realistic to have everything local?&amp;nbsp; Do you keep one of everything that Home Depot or Safeway keeps in stock?&amp;nbsp; Would be really nice, but not all that practical.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;B&gt;One size fits nobody&lt;BR&gt;&lt;/B&gt;The reality is there's no easy answer.&amp;nbsp; This is really an architectural and user model change is required to make this happen.&amp;nbsp; We've been through these before.&amp;nbsp; In the "old times", families ate what they grew.&amp;nbsp; Corn, milk, meat, etc.&amp;nbsp; Others only had Ice or Milk that was delivered to their house daily.&amp;nbsp; You could think of this as the "online model".&amp;nbsp; Today, we go shopping to &lt;A href="http://www.safeway.com/"&gt;Safeway&lt;/A&gt;, &lt;A href="http://dagnyc.com/"&gt;D'Agostino&lt;/A&gt;, or your local grocery store.&amp;nbsp; The stores don't grow anything locally.&amp;nbsp; They stock goods they get from somewhere else.&amp;nbsp; You take stuff home and stock it in your pantry, frig, freezer.&amp;nbsp; When you throw out the garbage it goes into the can.&amp;nbsp; The can gets picked up on Thursday.&amp;nbsp; It gets taken to &lt;A href="http://www.beavertonoregon.gov/departments/recycling/information/graphics/garbpath.jpg"&gt;the transfer station&lt;/A&gt;, and then off to the dump.&amp;nbsp; The point is we have lots of "store and forward"/sync models already in place.&amp;nbsp; What's really interesting is the "online" things are actually more expensive.&amp;nbsp; It turns out it's cheaper to stock goods that may be used, and accept a percentage of loss for things that don't sell than it is to create on demand.&amp;nbsp; Why do we think electronic bits and bytes should be "online" only?&amp;nbsp; Why are 1's and 0's more expensive than physical goods?&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;B&gt;Evolutionary approach: Mapping concepts&lt;BR&gt;&lt;/B&gt;If we look at the concepts we have today in web/service/stateless models, they break down into two common, and one advanced models:&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Get&lt;BR&gt;&lt;/B&gt;Get maps very easily to HTTP:Get.&amp;nbsp; Essentially you make a request to a domain, application and method.&amp;nbsp; You likely pass parameters and of course all the authentication goo.&amp;nbsp; The result of the get is returned and you now have a copy of information relevant to that point in time, and the specific question you've asked.&amp;nbsp; Most likely, but no guarantee it's accurate by the time you quickly display it on your 64bit, quad laptop with a gigabit connection to the internet.&amp;nbsp; Even historical data is subject to "correctness"- remember the Florida elections J&amp;nbsp; But, we live with "copies" all the time.&amp;nbsp; Copies are tangible, things that are "just there".&amp;nbsp; There's a separate question of how "out of date" the copy is.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;B&gt;Submit&lt;BR&gt;&lt;/B&gt;You have some information you're sending back.&amp;nbsp; You expect some action to be taken on the data you're submitting.&amp;nbsp; That submit can be accepted, rejected or modified.&amp;nbsp; You get an immediate response, but no guarantee what you've submitted will be accepted.&amp;nbsp; That might happen later on, it might not.&amp;nbsp; You hope, or expect to be notified if something changes.&amp;nbsp; But is that concept built into our app models?&amp;nbsp; Or, do we just assume the world is globally connected, and everything is always running so things can be asked and answered immediately, with 100% accuracy, in one big transaction so no two people can allocate the same "goods".... Whew, that's as ridiculous to assume as it is to type.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;B&gt;Can Get and Submit evolve?&lt;BR&gt;&lt;/B&gt;With &lt;B&gt;Get&lt;/B&gt;, you &lt;I&gt;can&lt;/I&gt; implement a "caching" model.&amp;nbsp; Rather than Get directly from the source, imagine you &lt;B&gt;Get&lt;/B&gt; through an abstraction layer.&amp;nbsp; For each Get the abstraction layer keys off the domain/app/method and name/value pairs for parameters.&amp;nbsp; Let's say I make a service call to: &lt;A href="http://acmeservices.com/Books/GetBookByName.asmx"&gt;http://AcmeServices.com/Books/GetBookByName.asmx&lt;/A&gt;.&amp;nbsp; I pass in:&amp;nbsp; Title=SQL Server Compact&amp;nbsp; &lt;/P&gt;
&lt;P&gt;In the GetCache, it looks for the service and name/value pairs that match.&amp;nbsp; If it finds a result, it may not have to actually make the network call.&amp;nbsp; It &lt;I&gt;could&lt;/I&gt; just return the cached result.&amp;nbsp; But what about stale data?&amp;nbsp; You can put an expiration policy on the cache.&amp;nbsp; For a list of states, a day is likely more than generous.&amp;nbsp; For pricing, maybe an hour.&amp;nbsp; The point is you can customize this per source.&amp;nbsp; For many things, one could argue most queries, the data is fairly static and the app could benefit immensely by caching the "gets".&amp;nbsp; If, however, you were to look online first, than only if the resource wasn't available look in the local cache than what benefit are you getting?&amp;nbsp; Sure, the app would "work offline", but you don't see any benefit in the online mode.&amp;nbsp; Each request still takes the time to roundtrip.&amp;nbsp; If you implement a smart caching model you can provide dramatically faster user responses. ...and in most cases, the data is perfectly accurate.&amp;nbsp; Now it would sure be nice to know when something changes, so if California does sink, Iraq or Canada become the 51&lt;SUP&gt;st&lt;/SUP&gt; state, you don't have to watch CNN and ask all your clients to either wait for the cache to update, or "invalidate" the cache.&amp;nbsp; I talked about notifications a bit &lt;A href="http://blogs.msdn.com/stevelasker/archive/2007/08/10/notification-to-pull.aspx"&gt;here&lt;/A&gt;, so I'll keep going. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;B&gt;Submit&lt;BR&gt;&lt;/B&gt;This one gets interesting as well.&amp;nbsp; You have an order to submit for some widgets.&amp;nbsp; Sure, you can submit directly to a "Web Service", or web page.&amp;nbsp; But in many situations the order submission doesn't actually mean the order will ship.&amp;nbsp; Accounting needs to verify your credit.&amp;nbsp; The products that were supposed to be in stock may have been routed to a bigger customer, or "fell off the truck".&amp;nbsp; Again, the point is just because you may get an immediate acknowledgement the order was accepted, doesn't mean it will be fulfilled.&amp;nbsp; So, why not accept this as the model, and when it works, it just works.&amp;nbsp; When a problem occurs, it's not really a problem because it's built into the system.&amp;nbsp; What if you "queued it up" for sending?&amp;nbsp; In this case we save the message locally, in a "logical queue", and when the service is available, we send it on its way.&amp;nbsp; I used the term "logical queuing" as I'm not implying you must use something like SQL Server Broker, MSMQ or WCF Queues, etc.&amp;nbsp; These tend to be a bit over complicated for what you need on the client, and it makes it difficult to act, query or evaluate the data in its transient state.&amp;nbsp; A while back I wrote a blogicle on and some samples for &lt;A href="http://blogs.msdn.com/stevelasker/archive/2007/08/21/sync-services-forado-net-and-sql-server-compact-presentation.aspx"&gt;Logical Queuing&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Sync&lt;BR&gt;&lt;/B&gt;This is what some might assume is the answer to all of these problems.&amp;nbsp; If I can synchronize changes from other nodes (the server and other clients) with my local store, and I can make changes locally and have them synchronize back "up" to the other nodes, doesn't that solve everything?&amp;nbsp; In the land of demos, sure.&amp;nbsp; But in the real world there are just too many complications.&amp;nbsp; The volume of data, requirements for business logic, and workflow make it difficult to assume Sync can solve all the problems.&amp;nbsp; Where sync does do really well is for synchronizing reference data.&amp;nbsp; That list of states, codes, or even larger volumes like the product catalog.&amp;nbsp; The &lt;A href="http://blogs.msdn.com/stevelasker/archive/2007/08/21/sync-services-forado-net-and-sql-server-compact-presentation.aspx"&gt;Logical Queuing&lt;/A&gt; blogicle and sample demonstrate some thoughts here.&amp;nbsp; I recently saw some work the Microsoft Mobile Line of Business CRM team, and it also uses a similar model.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;B&gt;Revolution is on the horizon&lt;BR&gt;&lt;/B&gt;With all the complications and half way solutions, you have to wonder what's the real answer to all this mess.&amp;nbsp; Will this problem just go away because we'll have high speed internet available everywhere?&amp;nbsp; Even if you could be guaranteed internet access everywhere, do we think that every service will be available all the time?&amp;nbsp; As the world gets more connected, will systems be more reliable and capable of enlisting in massive distributed transactions?&amp;nbsp; Or, will computing systems evolve to what every other large scale system as evolved to. Queuing, Caching, Reserving, Buffering, Acknowledgement, Conflict Detection &amp;amp; Resolution and Notifications.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;While I talked a bit about the food supply earlier, this is also a bit like the VB Classic to Web transition.&amp;nbsp; For those old enough to remember the great 90's there was a big transition from "fat clients" to "thin clients".&amp;nbsp; No subtle suggestion of which is better there J&amp;nbsp; When developers first started building ASP Classic (pre .net) apps they simply moved their session state to the ASP Session object.&amp;nbsp; Which meant web servers could serve about 5-10 people before falling over.&amp;nbsp; Not exactly the promise we had all hoped for.&amp;nbsp; It took a while to realize the app models had to change. But, moving from Client apps to Web apps was a bit more obvious.&amp;nbsp; Mostly because the UI changed (for the worse), but at least users could get their work done because we couldn't get the VB apps deployed.&amp;nbsp; (yes, I'm over simplifying things, but run with me for a minute).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Since developers had to re-write their UI anyway, it was an obvious change.&amp;nbsp; Making the transition from online to offline mode apps isn't as obvious.&amp;nbsp; The only UI required is the UI really telling them when problems occur.&amp;nbsp; Who wants that?&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;The reality is things are a changing.&amp;nbsp; Nothing to announce, nothing to promise, but there is a revolution on the way.&amp;nbsp; Revolutions take time for people to live through denial that it's coming, but it comes as a wave of reality that just smacks you with "duhh, I guess that was a stupid assumption".&lt;/P&gt;
&lt;P mce_keep="true"&gt;While we all wait for the revolution, you can look at things like ADO.NET Sync Services, the Sync Framework, Astoria Offline, and lots of goodies the Patterns and Practices team has done.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9003995" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author><category term="Microsoft Synchronization Platform" scheme="http://blogs.msdn.com/stevelasker/archive/tags/Microsoft+Synchronization+Platform/default.aspx" /><category term="Sync Services" scheme="http://blogs.msdn.com/stevelasker/archive/tags/Sync+Services/default.aspx" /><category term="OCS" scheme="http://blogs.msdn.com/stevelasker/archive/tags/OCS/default.aspx" /><category term="offline" scheme="http://blogs.msdn.com/stevelasker/archive/tags/offline/default.aspx" /></entry><entry><title>SQL Server Compact 3.5 SP1 available for Win CE 5.0 and 6.0 Platform Builder</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2008/08/14/sql-server-compact-3-5-sp1-available-for-win-ce-5-0-and-6-0-platform-builder.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2008/08/14/sql-server-compact-3-5-sp1-available-for-win-ce-5-0-and-6-0-platform-builder.aspx</id><published>2008-08-14T21:12:00Z</published><updated>2008-08-14T21:12:00Z</updated><content type="html">&lt;P&gt;After much demand, the latest Platform Builder updates have been released, and they include SQL Server Compact 3.5 SP1.&amp;nbsp; &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FB405FD9-983C-4D3F-91EB-6B58CC504604"&gt;Windows CE 5.0 Platform Builder Update&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=991A6EF3-7035-4D71-B424-1FB393AF8A26"&gt;Windows CE 6.0 Platform Builder Update&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8867532" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author></entry><entry><title>Why doesn't Visual Studio 2008 SP1 installer update SQL Server Compact 3.5 for Devices?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2008/08/13/why-doesn-t-visual-studio-2008-sp1-installer-update-sql-server-compact-3-5-for-devices.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2008/08/13/why-doesn-t-visual-studio-2008-sp1-installer-update-sql-server-compact-3-5-for-devices.aspx</id><published>2008-08-13T21:53:00Z</published><updated>2008-08-13T21:53:00Z</updated><content type="html">&lt;P&gt;In addition to the 64bit support being a web-only download, I should have also noted that for similar reasons, the Devices version of SQL Server Compact 3.5 SP1 is also only available as a web download.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Why:&lt;/B&gt;&amp;nbsp; Because of the multiple platforms, the download is ~22mb.&amp;nbsp; That's a big chunk for the Visual Studio Service Pack to include while not everyone may have installed the Smart Device extensions.&amp;nbsp; I wish things were more flexible so we could have incorporated this into the VS SP1 for an auto-prompt for extra downloads, but I must say, I've been very impressed with the quality of the installer of the 2008 SP1 experience compared to the 2005 SP1 experience.&amp;nbsp; Sometimes simpler is better...&lt;/P&gt;
&lt;P mce_keep="true"&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8860178" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author></entry><entry><title>Why does VS 2008 SP1 not include SQL Server Compact 3.5 SP1 64bit?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2008/08/12/why-does-vs-2008-sp1-not-include-sql-server-compact-3-5-sp1-64bit.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2008/08/12/why-does-vs-2008-sp1-not-include-sql-server-compact-3-5-sp1-64bit.aspx</id><published>2008-08-13T00:12:00Z</published><updated>2008-08-13T00:12:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;So you want 64bit support so you can set Target = Any.&amp;nbsp; You just installed VS 2008 SP1, but when you run your app you still get an error...&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Why?&lt;/B&gt;&amp;nbsp; Because VS 2008 SP1 doesn't actually include the 64bit version of SQL Server Compact 3.5 SP1.&amp;nbsp; To remedy this, simply install the 64bit version from our &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=dc614aee-7e1c-4881-9c32-3a6ce53384d9&amp;amp;displaylang=en"&gt;download page&lt;/A&gt;.&amp;nbsp; If you've already installed VS 2008 SP1, you have the 32 bit version.&amp;nbsp; You just need the 64bit version. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;B&gt;Why doesn't VS 2008 SP1 include the 64bit release?&lt;/B&gt;&amp;nbsp; Since VS2008 RTM only included the 32bit version of Compact, it was hard to justify adding a new package to the VS Service Pack.&amp;nbsp; We could have negotiated this as the DevDiv folks have been very accommodating, but that also meant we would have had to have the 64bit release done much earlier so it can be "checked-in" to the SP1 branch.&amp;nbsp; To minimize the download size for those that need the 64bit release, and to give our Compact team time to get the 64bit release complete, we opted to make the 64bit release available via the web only.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8853650" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author></entry><entry><title>SQL Server Compact 3.5 SP1 Released</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2008/08/07/sql-server-compact-3-5-sp1-released.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2008/08/07/sql-server-compact-3-5-sp1-released.aspx</id><published>2008-08-07T04:12:00Z</published><updated>2008-08-07T04:12:00Z</updated><content type="html">&lt;P&gt;I'm happy to announce the release of SQL Server Compact - SP1&amp;nbsp; &lt;/P&gt;
&lt;P&gt;This release includes several key features and bug fixes following up on the asks of our customers.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The new features in SQL Server Compact 3.5 SP1 are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;ADO.NET Entity Framework provider&lt;/B&gt;. The Entity Framework enables you to work with data in the form of domain-specific objects and properties, such as customers and customer addresses, without having to concern yourself with the underlying database tables and columns where this data is stored.&lt;/LI&gt;&lt;/UL&gt;
&lt;UL type=disc&gt;
&lt;UL type=disc&gt;
&lt;LI&gt;Support for the ADO.NET Entity Framework allows you to create flexible, strongly typed queries against the Entity Framework object context by using LINQ expressions and the LINQ standard query operators directly from the development environment.&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Case-sensitive collations &lt;/B&gt;for&lt;B&gt; &lt;/B&gt;those C# folks that were allowed into the database &amp;lt;g&amp;gt;&lt;B&gt;&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Native 64bit support.&lt;/B&gt; No more locking your apps to WoW mode or Target = X86. And yes, we support a single version of your app that can privately deploy Compact 32 and 64 so your customers don't have to figure out whether they're running 32 or 64bit operating systems.&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;We'll have a KB article out soon that covers the rollup of bug fixes since RTM as well.&lt;/P&gt;
&lt;P mce_keep="true"&gt;We're still waiting on the main landing/content pages to be updated, so for those of you too impatient, here's the download links directly:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;&lt;STRONG&gt;August 7th update&lt;/STRONG&gt;: Links updated to reflect download pages with 32bit and 64bit downloads, along with the localized versions&lt;/EM&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=dc614aee-7e1c-4881-9c32-3a6ce53384d9" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=dc614aee-7e1c-4881-9c32-3a6ce53384d9"&gt;SQL Server Compact 3.5 SP1 for desktop&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fce9abbf-f807-45d6-a457-ab5615001c8f&amp;amp;DisplayLang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fce9abbf-f807-45d6-a457-ab5615001c8f&amp;amp;DisplayLang=en"&gt;SQL Server Compact 3.5 SP1 for Devices&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fa751db3-7685-471b-ac31-f1b150422462&amp;amp;DisplayLang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fa751db3-7685-471b-ac31-f1b150422462&amp;amp;DisplayLang=en"&gt;SQL Server Compact 3.5 SP1 Server Tools (Merge Replication Serve2r Side Config)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A title="SQL Server Compact 3.5 Service Pack 1 Books Online and Samples" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=07829770-73A7-41E4-880D-E74B1A353623&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=07829770-73A7-41E4-880D-E74B1A353623&amp;amp;displaylang=en"&gt;SQL Server Compact 3.5 SP1 Books Online and Samples&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;SQL Server Compact SP1 will be included in Visual Studio 2008 SP1 as well.&amp;nbsp; So, you won't need to download it separately like you did in Visual Studio 2005 SP1.&amp;nbsp; ...we've gotten better about integrating things for you...&amp;nbsp; These links are mostly for those that need SQL Server Compact SP1 for VS 2005 support, or those that can't install VS 2008 SP1 for some reason.&amp;nbsp; The Visual Studio 2008 SP1 setup is sooooo much better than VS 2005 SP1.&lt;/P&gt;
&lt;P&gt;More posts to come, but just to answer the first Q&amp;amp;A:&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Q: &lt;/B&gt;What .NET FX Versions does Sp1 Require:&lt;BR&gt;&lt;B&gt;A: &lt;/B&gt;Compact SP1 can be used with VS 2005, .NET FX 2.0, 3.0, 3.5 and 3.5 SP1.&amp;nbsp; When using the Entity Provider, you will need .NET FX 3.5 SP1 as this is where the entity framework ships.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Thanks, and as always, we welcome your feedback,&lt;/P&gt;
&lt;P&gt;Steve and the rest of the SQL Server Compact team&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8839721" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author></entry><entry><title>SQL Server Compact Books - now in Spanish</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2008/08/05/sql-server-compact-books-now-in-spanish.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2008/08/05/sql-server-compact-books-now-in-spanish.aspx</id><published>2008-08-05T20:55:00Z</published><updated>2008-08-05T20:55:00Z</updated><content type="html">&lt;P&gt;For our Spanish customers, &lt;B&gt;Jose M. Torres&lt;/B&gt; just published a book covering &lt;A href="http://www.campusmvp.com/CampusMVP/SQL_Server_Compact_2008_SP1_Referencia_Completa.htm" mce_href="http://www.campusmvp.com/CampusMVP/SQL_Server_Compact_2008_SP1_Referencia_Completa.htm"&gt;SQL Server Compact for our Spanish customers&lt;/A&gt;.&amp;nbsp; Been a while since my Spanish was up to par, but Jose is one of our MVPs for device apps, so just gives him instant credibility in my book.&amp;nbsp; I'll have to get a few copies for hand outs and do some translating.&amp;nbsp; But, should make for a good read for those looking for more info.&lt;/P&gt;
&lt;P&gt;It's worth listing some other books as well:&lt;BR&gt;&lt;A href="http://www.amazon.com/Microsoft-SQL-Server-2005-Compact/dp/0672329220/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1217958181&amp;amp;sr=8-1" mce_href="http://www.amazon.com/Microsoft-SQL-Server-2005-Compact/dp/0672329220/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1217958181&amp;amp;sr=8-1"&gt;Microsoft SQL Server 2005 Compact Edition &lt;/A&gt;by Prashant Dhingra and Trent Swanson.&amp;nbsp; Prashant was a member of the SQL Server Compact team and has some unique perspectives.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.amazon.com/Windows-Mobile-Synchronization-Server-Compact/dp/0979891205/ref=pd_bbs_sr_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1217958281&amp;amp;sr=8-2" mce_href="http://www.amazon.com/Windows-Mobile-Synchronization-Server-Compact/dp/0979891205/ref=pd_bbs_sr_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1217958281&amp;amp;sr=8-2"&gt;Windows Mobile Data Synchronization with SQL Server 2005 and SQL Server Compact 3.1 &lt;/A&gt;by Rob Tiffany, William Vaughn, and Catherine Wyatt.&amp;nbsp; Rob, with his Microsoft Consulting Field experience, and Bill, with his always unique, funny and very real experience also makes for a great read.&amp;nbsp; Merge Replication can be one of the most powerful, and most difficult things to get correct.&amp;nbsp; Rob does a great job demystifying how to get the most from Merge Replication using SQL Server Compact. &lt;/P&gt;
&lt;P mce_keep="true"&gt;Bill also wrote this &lt;A href="http://www.boost.net/ebooks/SSCEv1.aspx" mce_href="http://www.boost.net/ebooks/SSCEv1.aspx"&gt;eBook for SQL Server Compact&lt;/A&gt; which was very insightful as well.&amp;nbsp; What I love about Bill is he's brutally honest, but has the real world perspective many of our customers demand.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8834546" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author><category term="Q&amp;amp;A" scheme="http://blogs.msdn.com/stevelasker/archive/tags/Q_2600_amp_3B00_A/default.aspx" /><category term="SQLce" scheme="http://blogs.msdn.com/stevelasker/archive/tags/SQLce/default.aspx" /><category term="SQL Server Compact Edition" scheme="http://blogs.msdn.com/stevelasker/archive/tags/SQL+Server+Compact+Edition/default.aspx" /><category term="Merge Replication" scheme="http://blogs.msdn.com/stevelasker/archive/tags/Merge+Replication/default.aspx" /></entry><entry><title>Heading to Tech Ed US 08</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2008/05/30/heading-to-tech-ed-us-08.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2008/05/30/heading-to-tech-ed-us-08.aspx</id><published>2008-05-30T10:43:00Z</published><updated>2008-05-30T10:43:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;It's that time of year again.&amp;nbsp; A quick note on some of the sessions/panel discussions I'll be presenting at, and some others that relate to SQL Server Compact.&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=0 width=617 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" width=203&gt;
&lt;P&gt;&lt;B&gt;Code &lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=414&gt;
&lt;P&gt;&lt;B&gt;Session &lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=203&gt;
&lt;P&gt;&lt;B&gt;DAT325&lt;/B&gt; &lt;BR&gt;Wednesday 8:30AM-9:45AM&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=414&gt;
&lt;P&gt;&lt;B&gt;Unlocking the Power of Microsoft SQL Server Compact 3.5&lt;/B&gt; &lt;BR&gt;With Visual Studio 2008, you can now embed SQL Server Compact as dlls directly within your application. But you've seen the intro talks; now what?&amp;nbsp; In this demo packed session, Ginny and Steve will dig into the more advanced scenarios for how to take advantage of SQL Server Compact within your applications. How to write managed Stored Procedures, sharing a common dll between desktop and device apps, using SQL Server Compact as a custom document format, tips on maximizing performance and how to deploy and version a local database within your app are all just some of the demos you'll see to maximize your end users productivity with Visual Studio 2008 and SQL Server Compact. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Location&lt;/B&gt;: &lt;A href="https://www.msteched.com/resources/content_files/room_layout/Breakout%20S220%20E.pdf" target=_blank mce_href="https://www.msteched.com/resources/content_files/room_layout/Breakout%20S220%20E.pdf"&gt;S220 E&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Presenters: &lt;/B&gt;Ginny Caughey and Steve Lasker&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" width=203&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=414&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=203&gt;
&lt;P&gt;&lt;B&gt;TEO Panel _24&lt;/B&gt; &lt;BR&gt;Wednesday 1:00PM-2:00PM&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=414&gt;
&lt;P&gt;&lt;B&gt;Building Offline Enabled Applications Panel Discussion&lt;/B&gt; &lt;BR&gt;In an online world, why are we building offline apps? Because networks are only occasionally available, or occasionally not available. However, building Offline apps is a bit more complicated. Come bring your thoughts to a panel of speakers that work on enabling offline apps from the storage, sync, programming model, and UI stack. The panelists will discuss what we're working on today, and what's coming in the future. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Location&lt;/B&gt;: Open Spaces on the main floor&lt;BR&gt;&lt;B&gt;Panelists: &lt;/B&gt;Steve Lasker, Ginny Caughey, Rob Tiffany, Liam Cavanagh, Glenn Block&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" width=203&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" width=414&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=203&gt;
&lt;P&gt;&lt;B&gt;TEO Panel _33&lt;/B&gt; &lt;BR&gt;Friday 2:00PM-3:00PM&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=414&gt;
&lt;P&gt;&lt;B&gt;LINQ in the UI Layer&lt;/B&gt; &lt;BR&gt;LINQ is commonly known as a great way to query data from external sources (databases, web services, XML, SharePoint, etc). However, there are numerous other places where LINQ can make the developers life much easier when working on the end user interface, especially when you incorporate DataSet into the mix. This panel will talk about these approaches and the possible pitfalls of using them.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Location&lt;/B&gt;: Open Spaces on the main floor &lt;BR&gt;&lt;B&gt;Panelists: &lt;/B&gt;Erick Thompson, Steve Lasker, Amanda Silver&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=203&gt;
&lt;P mce_keep="true"&gt;&lt;B&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=414&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=203&gt;
&lt;P&gt;&lt;B&gt;MBL403&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=414&gt;
&lt;P&gt;&lt;B&gt;Building Custom Sync Providers for the Microsoft Sync Framework &lt;BR&gt;Andy Wigley &lt;BR&gt;Wednesday 2:45 &lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=203&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=414&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=203&gt;
&lt;P&gt;&lt;B&gt;WIN202&amp;nbsp; &lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=414&gt;
&lt;P&gt;&lt;B&gt;Introduction to Microsoft Sync Framework &lt;BR&gt;Liam Cavanagh &lt;BR&gt;Thursday 1:00&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=203&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=414&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=203&gt;
&lt;P&gt;&lt;B&gt;MBL404&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=414&gt;
&lt;P&gt;&lt;B&gt;Microsoft SQL Server 2005 Compact Ultimate Performance Tuning&lt;BR&gt;Darren Shaffer&lt;BR&gt;Thursday 4:30 &lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=203&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=414&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=203&gt;
&lt;P&gt;&lt;B&gt;MBL07-TLC&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=414&gt;
&lt;P&gt;&lt;B&gt;Microsoft Synchronization Services for ADO.NET: From Desktops to Devices &lt;BR&gt;Liam Cavanagh &lt;BR&gt;Friday 8:30 &lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=203&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=414&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=203&gt;
&lt;P&gt;&lt;B&gt;MBL01-TLC&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=414&gt;
&lt;P&gt;&lt;B&gt;Taking Data Offline: Introduction to Microsoft Synchronization Services for ADO.NET &lt;BR&gt;Liam Cavanagh&lt;BR&gt;Friday 4:30 &lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Road Trip&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;The week after Tech Ed Developers we'll be doing our next Road Trip.&amp;nbsp; We still have some time in a few of the cities, so if you've got something interesting, let me know and we might be able to swing by.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Tampa Florida, Monday-Tuesday, June 9&lt;SUP&gt;th&lt;/SUP&gt;-10&lt;SUP&gt;th&lt;/SUP&gt;&lt;/LI&gt;
&lt;LI&gt;Los Angeles , Wednesday, June 10&lt;SUP&gt;th&lt;/SUP&gt;&lt;/LI&gt;
&lt;LI&gt;San Francisco, Friday, June 13&lt;SUP&gt;th&lt;/SUP&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;PowerPoint Presentation&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;The following links were posted prior to Tech Ed. In typical fashion the content will continue to evolve until we actually present.&amp;nbsp; I'll leave a note here when these have been updated post the session.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://steve.lasker.members.winisp.net/Presentations/TechEdUS08-DAT325-UnlockThePowerOfSQLCompact.pptx"&gt;Tech Ed US 08 DAT325 - Unlocking the Power of SQL Server Compact &lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The following demos were presented either as part of the &lt;B&gt;Unlocking the Power of SQL Server Compact&lt;/B&gt; session Ginny and I gave, shown at the booth, or shown at other presentations for our June '08 Road Trip&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Demos&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/CreatingDatabaseSchemaInCode.zip"&gt;Creating &amp;amp; Versioning Local Databases&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/DatabaseViewer.zip"&gt;Database Viewer Utility&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/ManagedSprocs.zip"&gt;Managed Stored Procedures&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SQLcePerformance.zip"&gt;SQL Server Compact Performance Testbed&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SQLceUnderASPnet.zip"&gt;Enabling SQL Server Compact under ASP.NET&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SqlServerCeTraceListener.zip"&gt;Using SQL Server Compact as a Synchronized Trace Listener&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/RecipeManager.zip"&gt;SQL Server Compact as a Custom Document Format - Recipe Manager&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/RunFromReadOnlyMedia.zip"&gt;Running SQL Server Compact from Read Only Media&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/ExcelWorkbook.zip"&gt;Integrating SQL Server Compact into Excel - By Ginny Caughey&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/LogicalQueuing.zip"&gt;Logical Queuing&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SQLceISAM.zip"&gt;SQL Server Compact ISAM APIs&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://steve.lasker.members.winisp.net/Demos/SQLce35/SqlCeResultSet.zip"&gt;Updateable, Scrollable Cursors w/SqlCeResultSet&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;We'll be spending a lot of time at the booth hearing from all of you that have started to work with Compact.&amp;nbsp; We continue to hear about cool scenarios, so come on by, and tell us what you like and what you think we need to do in our 4.0 release.&lt;/P&gt;
&lt;P&gt;Thanks,&lt;BR&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8562213" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author></entry><entry><title>SQL Server Compact 3.5 SP1 Beta available</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/stevelasker/archive/2008/05/14/sql-server-compact-3-5-sp1-beta-available.aspx" /><id>http://blogs.msdn.com/stevelasker/archive/2008/05/14/sql-server-compact-3-5-sp1-beta-available.aspx</id><published>2008-05-14T20:22:00Z</published><updated>2008-05-14T20:22:00Z</updated><content type="html">&lt;P&gt;&lt;STRONG&gt;August 6th 2008 UPDATE&lt;/STRONG&gt;: SQL Server Compact 3.5 SP1 has shipped: &lt;A id=bp___ctl00___RecentPosts___postlist___EntryItems_ctl00_PostTitle href="http://blogs.msdn.com/stevelasker/archive/2008/08/07/sql-server-compact-3-5-sp1-released.aspx"&gt;&lt;FONT color=#006666&gt;SQL Server Compact 3.5 SP1 Released&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Developers looking to get the beta of SP1 for SQL Server Compact can download it from &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=68539FAE-CF03-4C3B-AEDA-769CC205FE5F&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=68539FAE-CF03-4C3B-AEDA-769CC205FE5F&amp;amp;displaylang=en"&gt;here&lt;/A&gt;: &lt;/P&gt;
&lt;P&gt;If you install &lt;A href="http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx" mce_href="http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx"&gt;Visual Studio 2008 SP1 Beta&lt;/A&gt;, you'll get the Compact Sp1 as well.&amp;nbsp; But, if you need the Compact SP1 beta for Visual Studio 2005, or simply can't install the VS 2008 SP1 Beta for some reason, you can download the Compact beta directly.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;B&gt;So, what's in the Compact SP1 Beta?&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;ADO.NET Entity support for SQL Server Compact. In addition to runtime enhancements provided in the Compact runtime, you'll also get Designer support if you download the VS 2008 SP1 Beta. &lt;/LI&gt;
&lt;LI&gt;Case Sensitive Collation support&lt;/LI&gt;
&lt;LI&gt;Updates for datatypes exposed by SQL Server 2008 to be synchronized with Compact 3.5. We don't have any of these new datatypes in Compact, but sync will map them to equivalent types in Compact. &lt;/LI&gt;
&lt;LI&gt;Bug fixes for several query optimizations&lt;/LI&gt;
&lt;LI&gt;Additional overload to the SqlCeEngine.Verify() api to include additional consistency checking&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;EM&gt;&lt;STRONG&gt;Correction (May 15, '08):&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;EM&gt;&lt;STRONG&gt;The Verify overload was actually added just after SP1.&amp;nbsp; I forgot that I installed a later build when writing this post. ...so, it's coming, just not in the public SP1&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;System.Data.SqlServerCe.&lt;SPAN style="COLOR: #2b91af"&gt;SqlCeEngine&lt;/SPAN&gt; eng = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; System.Data.SqlServerCe.&lt;SPAN style="COLOR: #2b91af"&gt;SqlCeEngine&lt;/SPAN&gt;();&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;eng.Verify(&lt;B style="mso-bidi-font-weight: normal"&gt;System.Data.SqlServerCe.&lt;SPAN style="COLOR: #2b91af"&gt;VerifyOption&lt;/SPAN&gt;.Enhanced&lt;/B&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Updates to the Sync Services for ADO.NET runtime, including the ability to leverage the SQL Server 2008 Change Tracking features in the SyncAdapterBuilder&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;B&gt;What's not yet in the Beta?&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Native 64bit support. This will be in the RTM download. It's just not part of the VS SP1 as we didn't ship the 64bit release with VS 2008, and we're trying to hold the rule that we only service bits that were already on the users machine.&lt;/LI&gt;
&lt;LI&gt;A bump in our versioning to support private deployment and central deployment. &lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;I'll describe this in another post, but essentially developers wanting to privately deploy Sp1 when RTM is installed will fail as both SP1 and RTM have the same version number. Since the GAC always wins, the newer, privately deployed dlls will not load. We've fixed this in a build just after the beta, so this will work when we ship...&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;B&gt;When will it ship?&lt;BR&gt;&lt;/B&gt;SQL Server Compact 3.5 SP1 will ship with Visual Studio 2008 SP1 and SQL Server 2008, which is scheduled for later this summer.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;Please post feedback and questions to &lt;A href="http://go.microsoft.com/fwlink/?LinkId=66523" mce_href="http://go.microsoft.com/fwlink/?LinkId=66523"&gt;SQL Server Compact 3.5 MSDN Forum&lt;/A&gt; and &lt;A href="http://go.microsoft.com/fwlink/?LinkId=104038" mce_href="http://go.microsoft.com/fwlink/?LinkId=104038"&gt;Synchronization Services for ADO.Net MSDN Forum&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;For bugs, please post to &lt;A href="https://connect.microsoft.com/SQLServer/feedback/CreateFeedback.aspx" mce_href="https://connect.microsoft.com/SQLServer/feedback/CreateFeedback.aspx"&gt;Microsoft Connect&lt;/A&gt;, and be sure to set the product name to &lt;B&gt;SQL Server Compact Edition&lt;/B&gt; Repro steps are key.&lt;/P&gt;
&lt;P&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8503715" width="1" height="1"&gt;</content><author><name>Steve.Lasker</name><uri>http://blogs.msdn.com/members/Steve.Lasker.aspx</uri></author></entry></feed>