<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>VistaDB .Net Database Blog</title>
    <description>Embedded SQL Database Engine for .Net</description>
    <link>http://www.vistadb.net/blog/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.5.13.0</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://www.vistadb.net/blog/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>VistaDB Software</dc:creator>
    <dc:title>VistaDB .Net Database Blog</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Vistadb" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FVistadb" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FVistadb" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FVistadb" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Vistadb" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FVistadb" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FVistadb" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FVistadb" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:browserFriendly>Visit the VistaDB.Net forums for more discussions about database and dot net technology.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <title>Entity Framework support - Be there first, or getting it right?</title>
      <description>&lt;p&gt;I have been working on this blog post for around six months.&amp;#160; I keep writing and shelving it.&amp;#160; Today I read a blog post from the &lt;a href="http://community.devexpress.com/blogs/ctodx/archive/2009/07/01/devexpress-newsletter-5-message-from-the-cto.aspx"&gt;DexExpress CTO&lt;/a&gt; that got me back to wanting to publish this post.&lt;/p&gt;  &lt;h3&gt;Early Adopters?&lt;/h3&gt;  &lt;p&gt;To put what Julian said in different terms; Do you want all the Early Adopters for your product?&amp;#160;&amp;#160; There are pro and con arguments to having the early adopters when it comes to technology.&amp;#160; &lt;/p&gt;  &lt;p&gt;While they tend to be some of the most passionate people out there, and they are usually eager to play with a technology but have little to no loyalty to that technology.&amp;#160; By the time you have stabilized your product cycle they will be long gone on to the next technology buzzword to play with it.&lt;/p&gt;  &lt;p&gt;They also tend to have the most harsh reviews of the early technology.&amp;#160; They will bash it as not complete, or not like product x, etc.&amp;#160; But by the time you have addressed their issues they will never come back to update those huge blog rants they did against you in the early days.&amp;#160; Their social media contracts tend to be very one sided – whatever is in it for them today.&amp;#160; After all anyone on the Internet can post a blog slamming a product or technology as inferior.&amp;#160; You don’t need credentials or facts to back you up.&amp;#160; Just post it – people will believe it.&amp;#160; And if the company actually listens to you and implements your suggestions you can always shrug them off as not being “agile” enough for you (IE, they didn’t give you that build the same day you asked for it).&lt;/p&gt;  &lt;h3&gt;Buzz word and gone&lt;/h3&gt;  &lt;p&gt;Microsoft is great at playing into this early adopter hype.&amp;#160; They print magazines with all their buzz word laden technologies sometimes years before you or I will be able to put it into production.&amp;#160; And by the time you do get around to wanting to use it in production they have often already abandoned it for another, newer, faster, more buzz word laden system.&lt;/p&gt;  &lt;p&gt;Look at Windows Workflow (WF).&amp;#160; Anyone who early adopted it is probably kicking themselves now.&amp;#160; Microsoft has basically &lt;a href="http://www.vistadb.net/blog/post/2009/02/17/Windows-Workflow-a-total-rewrite-in-Dot-Net-40.aspx"&gt;punched reset&lt;/a&gt; on the entire design.&amp;#160; I really looked at implementing VistaDB serializers for WF. &lt;/p&gt;  &lt;h3&gt;They can’t remove it from the framework!&lt;/h3&gt;  &lt;p&gt;And to all the people who use the argument that they can’t remove it from the framework - that is just silly.&amp;#160; LINQ 2 SQL (L2S) is a good example of this.&amp;#160; Microsoft printed tons of material about it, but you weren’t supposed to take it seriously.&amp;#160; It was just until the more serious Entity Framework came along, didn’t you know?&amp;#160; &lt;/p&gt;  &lt;p&gt;Well, from the number of articles, books, etc I don’t think anyone understood that argument.&amp;#160; So if you did buy into that technology what about .Net 4?&amp;#160; Well, Microsoft has said that L2S will exist in some capacity, but what does that mean?&amp;#160; To me it means it means you had better be embracing .Net 3.5 SP1 for a very long time.&amp;#160; &lt;/p&gt;  &lt;p&gt;If your favorite buzzword technology was implemented in a SP how stable is that to actually deploy?&amp;#160; I know lots of shops that still refuse to deploy .NET 3.5 SP1 because of the problems they had with the “Service Pack” changing how things worked for their applications.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Sync Services&lt;/h3&gt;  &lt;p&gt;We actually got bit by Sync Services rewrites three times before we stopped.&amp;#160; Is it stable today?&amp;#160; I don’t think so. From what I have read on the renamed and polished Sync Framework (as it is now being called) it is still being tweaked and changed.&amp;#160; There are lots of people pushing for changes for it to support Azure (ahem, aka cloud computing, aka SQL Server in the Cloud, whatever they want to call it today).&lt;/p&gt;  &lt;h3&gt;Got Entity Framework?&lt;/h3&gt;  &lt;p&gt;I have gotten a number of emails from users wanting to look at our &lt;a href="http://en.wikipedia.org/wiki/Entity_Framework"&gt;Entity Framework (EF) provider&lt;/a&gt;.&amp;#160; After all didn’t we talk about it late last year?&amp;#160; Yes, and we did implement it.&amp;#160; The entire VistaDB EF provider is complete.&amp;#160; But we will not ship it until we know it performs good enough, and that it will be around for us to support our customers.&lt;/p&gt;  &lt;h3&gt;Ship it!&lt;/h3&gt;  &lt;p&gt;So why not ship it?&amp;#160; Why not give it to all those people who want it?&amp;#160; Why not ride that Early Adopter wave?&amp;#160; &lt;/p&gt;  &lt;p&gt;Basically, because I won’t do that to you.&amp;#160; I actually care about the technologies and interfaces we unleash on customers.&amp;#160; I want to ensure whatever technology we present publicly as an interface is stable and not going to go away on you without warning.&amp;#160; &lt;/p&gt;  &lt;p&gt;We have been making lots of changes in the engine to support patterns that are particular only to the EF provider.&amp;#160; They are not complete, and may not be by the time we release 4.0.&amp;#160; There are just a lot of strange behaviors in the way it works because it is LINQ based – not relational based.&amp;#160; We want to ensure that the majority of the common patterns are handled with decent performance, and then continue to improve the engine over the lifetime of 4.x.&lt;/p&gt;  &lt;h3&gt;What type of mismatch?&lt;/h3&gt;  &lt;p&gt;All ORMs exhibit a mismatch when they are mapped onto relational data.&amp;#160; It is known as the &lt;a href="http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch"&gt;Relational Impedance Mismatch&lt;/a&gt; and all ORMs have it to some extent.&lt;/p&gt;  &lt;p&gt;An example of the problem in real world terms:&amp;#160; If you have a group of objects you might like to foreach() over them to do something. With Entity Framework that might result in thousands of round trips to your database to answer each of those foreach iterations with one single query.&amp;#160; You are much better off to work on a result set and pair things using set operators.&amp;#160;&amp;#160; EF is supposed to provide for this scenario through DataSets, but it is actually highly dependent on what code the programmer actually wrote.&amp;#160; If the programmer does not understand what the framework is going to generate they can beat the crap out of database connections.&lt;/p&gt;  &lt;p&gt;We have found some common CLR coding patterns that translate horribly to EF generated database calls.&amp;#160; We have to address these issues before we ship something.&lt;/p&gt;  &lt;h3&gt;Support and Documentation Problems&lt;/h3&gt;  &lt;p&gt;Another problem with EF is the documentation.&amp;#160; We are an ADO.NET compliant database engine.&amp;#160; That means if you understand ADO.NET patterns and practices you can pick up our engine very easily.&amp;#160; There is no such level of competency with EF.&amp;#160; Everyone will be in a huge learning curve.&amp;#160; Most of the documentation you find for LINQ is around Linq2SQL syntax (which is NOT the same).&amp;#160; And to make it worse that L2S syntax will compile and blow up and runtime in most cases with very bizarre runtime errors.&amp;#160; This would cause a huge support load on us.&amp;#160; I cannot imagine how we would be able to keep up with those types of tickets when most of the issues have nothing to do with us, but the EF framework itself.&lt;/p&gt;  &lt;p&gt;So if we ship an EF provider &lt;strong&gt;we are in effect having to support the entire EF framework including tools designers and runtime&lt;/strong&gt;.&amp;#160; That is a REALLY tall order for a small company.&amp;#160; &lt;/p&gt;  &lt;h3&gt;Entity Framework Stability&lt;/h3&gt;  &lt;p&gt;So if we are going to have to support it, how stable is it?&amp;#160; In my experience of our online store and related tools it has a ways to go for stable.&amp;#160; I still have to regen our store edml model about once a month because Visual Studio somehow corrupted it or got out of sync.&amp;#160; I also still have the GUI wizard in Visual Studio crash on me regularly.&amp;#160; And this is all when working with SQL Server.&amp;#160; &lt;/p&gt;  &lt;p&gt;Who do you think is going to get those tickets if they were working with our EF Provider?&amp;#160; We would, and there is nothing we can do to fix them.&lt;/p&gt;  &lt;p&gt;I know of five companies that started using EF last fall for major projects.&amp;#160; Out of those five only one is still using it in any way.&amp;#160; All of them abandoned it for their main DAL, but one was still using it for internal tools and&amp;#160; utilities.&amp;#160; That tells me the framework has a ways to go for widespread adoption.&lt;/p&gt;  &lt;h3&gt;When will we ship it?&lt;/h3&gt;  &lt;p&gt;The current plan (and this is of course subject to change) is to start preview builds of 4.0 shortly after we ship 3.6.&amp;#160; VistaDB 3.6 is feature complete at this point.&amp;#160; We are just working on the samples and fine tuning the installer.&lt;/p&gt;  &lt;p&gt;Rather than release VistaDB 3.7 we are going to start releasing VistaDB 4 preview builds.&amp;#160; I will post more information on what that means in engine terms later, but our plans are to release a series of preview builds and then ship a stable around the October timeframe.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;There are two things that have to happen for us to ship an EF provider.&lt;/em&gt;&lt;/strong&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;One is that &lt;strong&gt;I have to see the .Net 4 EF model and know we are not going to be required to totally rework our existing code&lt;/strong&gt;.&amp;#160; If we have to rewrite then I will never release the current provider.&amp;#160; It would be a waste of time to ship something that is obsolete almost as soon as it is released. I want to make sure we can support the VistaDB EF Provider for a minimum of 2 years. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The second is the Visual Studio 2010 plugin model specifications&lt;/strong&gt;.&amp;#160; Right now our current plugins do not work with VS 2010.&amp;#160; If Microsoft is going to leave the current model in place and require us to update the designers then we will have to create a new build for VS 2010.&amp;#160; &lt;/p&gt;  &lt;h3&gt;Visual Studio Support&lt;/h3&gt;  &lt;p&gt;We cannot afford to support three versions of Visual Studio (each with it’s own designer) at the same time, so it would mean a drop of VS 2005 support for VistaDB 4.&amp;#160; I don’t want to do that.&amp;#160; I am hoping that Microsoft fixes their current issues, or publishes a way for third parties to not have to build multiple plugins to support different Visual Studio editions.&amp;#160; &lt;/p&gt;  &lt;p&gt;I don’t think that Visual Studio 2010 is going to be a runaway adoption from day one.&amp;#160; I find that a lot of companies are just now migrating to Visual Studio 2008, but many are sticking with 2005 and hoping to leapfrog directly to 2010.&amp;#160; But it comes back to that Early Adopter statement above.&amp;#160; Those users who adopt Visual Studio 2010 early are going to be vocal users.&lt;/p&gt;  &lt;h3&gt;.NET 3.5 SP1 or 4 support?&lt;/h3&gt;  &lt;p&gt;You can’t build an EF provider without using .Net 3.5 SP1 – it simply didn’t exist before that time.&amp;#160; That means you are dependant on a SP being present.&amp;#160; (WHY, oh WHY didn’t they call it 3.6 since it added so many new features!)&amp;#160; This means we have to ship a .Net 3.5 SP1 assembly to support EF.&amp;#160; Would you do that and commit to that SP for the next 2 years, or wait for .Net 4?&lt;/p&gt;  &lt;p&gt;There are a lot of great things in the .Net 4 framework.&amp;#160; We would love to take advantage of them, but you just can’t do that without also maintaining .Net 2 versions at this time.&amp;#160; I do eventually think that .Net 4 will replace the current .Net 2 stable that most people use.&amp;#160; I think a lot of companies are going to jump straight to 4 from 2 when they finally switch their compile targets. And that means the version of Entity Framework in .Net 4 is a very serious factor for us in what to support in VistaDB.&lt;/p&gt;  &lt;p&gt;Right now I think we are leaning towards 3.x staying a .NET 2 assembly without Entity Framework Support.&amp;#160; Then stepping up to .NET 3.5 SP1 for VistaDB 4 with EF.&amp;#160; That would mean no Visual Studio 2010 support in the initial releases unless Microsoft changes something.&lt;/p&gt;  &lt;h3&gt;What are you doing?&lt;/h3&gt;  &lt;p&gt;What about you? What are you doing with regards to .Net versions and Visual Studio?&amp;#160; Are you going to start shipping 3.5 SP1 tied assemblies?&amp;#160; Or would you rather wait for 4?&amp;#160; &lt;/p&gt;  &lt;p&gt;Is your company still shipping 2.0 assemblies today and skipping .NET 3 entirely?&lt;/p&gt;  &lt;p&gt;I hope this has provided a little glimpse into how complicated it is for us to decide how and when to ship things.&amp;#160; It is never easy, but the entire .Net 3 product cycle has thrown a lot of our plans into a spin.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=IlGp8f4zQMs:ACOwajr0r8k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=IlGp8f4zQMs:ACOwajr0r8k:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=IlGp8f4zQMs:ACOwajr0r8k:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=IlGp8f4zQMs:ACOwajr0r8k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=IlGp8f4zQMs:ACOwajr0r8k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/IlGp8f4zQMs" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/IlGp8f4zQMs/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/07/02/Entity-Framework-support-Be-there-first-or-getting-it-right.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=4f614b59-3e5d-4c7a-a87d-cb772898d035</guid>
      <pubDate>Thu, 02 Jul 2009 19:50:10 -0300</pubDate>
      <category>VistaDB News</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=4f614b59-3e5d-4c7a-a87d-cb772898d035</pingback:target>
      <slash:comments>11</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=4f614b59-3e5d-4c7a-a87d-cb772898d035</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/07/02/Entity-Framework-support-Be-there-first-or-getting-it-right.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=4f614b59-3e5d-4c7a-a87d-cb772898d035</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=4f614b59-3e5d-4c7a-a87d-cb772898d035</feedburner:origLink></item>
    <item>
      <title>VistaDB 3.6 Build 86 Preview</title>
      <description>&lt;p&gt;This is an update to the VistaDB 3.6 preview builds as we continue to push forward towards release.&amp;#160; &lt;/p&gt;  &lt;p&gt;The Data Builder now has tabs support on the SQL input windows (yea!).&amp;#160; And some minor display changes.&lt;/p&gt;  &lt;p&gt;There are a lot of API changes in this build, but I think we are finished for changes to this version.&amp;#160; The majority of the API changes were to complete the ripping out of the V-Index system that was non standard.&amp;#160; It has been deprecated since VistaDB 3.2 or 3.3, and we are finally removing it.&lt;/p&gt;  &lt;p&gt;We also changed the event handler and object class name for monitoring PRINT messages from your SQL Code.&amp;#160; The help has a new topic on how to monitor SQL PRINT messages in your code.&amp;#160; We changed the class to match the naming from SQL Server.&lt;/p&gt;  &lt;p&gt;This installer will only be able to uninstall and upgrade 3.6 installs.&amp;#160; If you are running any 3.6 prerelease you can just run this setup.&amp;#160; If you are running any previous 3.x build you must uninstall it first before installing this build. &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;VistaDB 3.6 PREVIEW&lt;/strong&gt;     &lt;br /&gt;&lt;strong&gt;Build #86, 07/01/2009 &lt;/strong&gt;&lt;/p&gt;  &lt;h3&gt;NOTES &lt;/h3&gt;  &lt;p&gt;The NUnit tests in this build have been updated.&amp;#160; There are &lt;strong&gt;over 600 NUnit tests&lt;/strong&gt; present in the current system. &lt;/p&gt;  &lt;p&gt;IVistaDBCredential interface has been removed.&amp;#160; This also removes it from any calls that may have had it implemented ( OpenDDA ). &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DefineVIndex&lt;/strong&gt; has been removed.&amp;#160; It was only included for 2.x compatibility and deprecated since 3.3.&amp;#160; VScripts are not supported in indexes at all - we have removed them from all index structures. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;IVistaDBIndexInformation&lt;/strong&gt; changed to remove the V-Index specific properties of the interface.&amp;#160; They were not supported and flagged as deprecated.&amp;#160; This also then chains down to all classes that implement this interface.&amp;#160; DBStructure.IndexStructure is the most notable since it is returned by enumerating over indexes on a DDA Table. &lt;/p&gt;  &lt;h3&gt;Data Builder Changes&lt;/h3&gt;  &lt;p&gt;Data Builder has quite a few small changes and updates to dialogs.&amp;#160; One of the most notable is that almost all of the forms that accept text input now support Tabs!&amp;#160; You can Tab in your SQL query code and the tabs should be preserved now.&amp;#160; The Line / Col display may not be quite correct in all situations since the engine does not know how to count the tab character.&amp;#160; So error messages may be off by a few characters if you use tabs until we get all that working correctly. &lt;/p&gt;  &lt;p&gt;Alter / Create table form Identity checkbox has been changed to render black when enabled and gray when not.&amp;#160; This should make it easier to tell when you can check the box. &lt;/p&gt;  &lt;p&gt;The Use Default Value in Update has been appended with (Not SQL Standard).&amp;#160; This is one of the cases where we have a feature that SQL Server does not support.&amp;#160; If you want to upsize to SQL Server at some point later the only way you can accomplish this feature is through triggers.&amp;#160; We wanted to make sure it was labeled as non standard, and may eventually make a &amp;quot;strict&amp;quot; compliance mode that does not allow non standard features. &lt;/p&gt;  &lt;h3&gt;ISSUES AND FIXES &lt;/h3&gt;  &lt;p&gt;Changed the PRINT notification event and callbacks to match SQL Server naming conventions.&amp;#160; The event is now called VistaDBInfoMessageEvent and VistaDBInfoMessageEventHandler. &lt;/p&gt;  &lt;p&gt;TransactionMode=Ignore had a bug when a transaction was auto enlisted in a child execution.&amp;#160; The rollback was reporting an error.&amp;#160; There are no other known issues with TransactionMode Ignore at this time.&amp;#160; We would appreciate any testing you may be able to provide on this feature. &lt;/p&gt;  &lt;h3&gt;OTHER NON TICKETED ITEMS&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;VistaDB.Diagnostic.Errors&lt;/strong&gt; have had some changes to better english constants.&amp;#160; The error numbers are all the same.&amp;#160; Some of the error messages were also rewritten to not use ' at users requests for easier parsing from within CLR languages at runtime. &lt;/p&gt;  &lt;p&gt;Documentation updates and changes. &lt;/p&gt;  &lt;p&gt;VistaDBEngine classes will throw &lt;strong&gt;ReadOnlyExceptions&lt;/strong&gt; upon user modification rather than NotImplementedExceptions (the engine class is readonly).&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=GJSO2Uuusv8:6cA9NIce0I0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=GJSO2Uuusv8:6cA9NIce0I0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=GJSO2Uuusv8:6cA9NIce0I0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=GJSO2Uuusv8:6cA9NIce0I0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=GJSO2Uuusv8:6cA9NIce0I0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/GJSO2Uuusv8" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/GJSO2Uuusv8/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/07/01/VistaDB-36-Build-86-Preview.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=178d71fa-aeaf-4641-b0ae-25a9d7b23a54</guid>
      <pubDate>Wed, 01 Jul 2009 19:50:17 -0300</pubDate>
      <category>Builds</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=178d71fa-aeaf-4641-b0ae-25a9d7b23a54</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=178d71fa-aeaf-4641-b0ae-25a9d7b23a54</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/07/01/VistaDB-36-Build-86-Preview.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=178d71fa-aeaf-4641-b0ae-25a9d7b23a54</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=178d71fa-aeaf-4641-b0ae-25a9d7b23a54</feedburner:origLink></item>
    <item>
      <title>VistaDB 3.6 Build 85 Alpha</title>
      <description>&lt;p&gt;As was discussed in the previous &lt;a href="http://www.vistadb.net/blog/post/2009/06/15/New-features-and-changes-coming-in-VistaDB-36.aspx"&gt;blog post about VistaDB 3.6&lt;/a&gt; we are now ready to being Alpha testing.&lt;/p&gt;
&lt;h3&gt;Why Alpha?&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;This is a new installer.&amp;nbsp; There could be problems with the install process and I want to work them out quickly.&amp;nbsp; I expect to have a few releases of 3.6 during the Alpha stage before we are ready for Beta.&lt;/p&gt;
&lt;p&gt;There are a lot of internal engine changes.&amp;nbsp; We have 3 known bugs we are still working right now, but we want to get others started testing as well to make sure we didn&amp;rsquo;t break anything with existing apps.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;What is in this release?&lt;/h3&gt;
&lt;p&gt;New Tarma based installer.&amp;nbsp; I am planning to do another post about our switch to Tarma, but things have gone very smooth so far.&amp;nbsp; I am quite pleased with the performance and options of the installer.&amp;nbsp; Their support has also been fantastic and very helpful.&lt;/p&gt;
&lt;p&gt;The sample databases are now copied to the shared public folder of users.&amp;nbsp; Shared Documents\VistaDB\Databases and Scripts are now included.&amp;nbsp; This is to make it easier to use the demos on a UAC enabled machine without requiring Admin rights.&amp;nbsp; The blank database template (blank.vdb3) is also copied there now.&amp;nbsp; When you right click on a folder and add a new database that blank.vdb3 is the file copied.&amp;nbsp; This allows you to setup defaults you always use (page size, locale, etc) and get them when a new database is built.&lt;/p&gt;
&lt;p&gt;Data Migration Wizard is NOT included yet because we are making changes to the interface and functions.&amp;nbsp; The older DMW will be made available as a separate download for users who need VistaDB 2 migration with instructions on how to use it.&lt;/p&gt;
&lt;p&gt;Samples are also not included other than the NUnit test project.&amp;nbsp; Samples are being restructured and will be ready before the final release of 3.6.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Release Notes&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;VistaDB 3.6 ALPHA     &lt;br /&gt;Build #85, 06/19/2009 &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DISCLAIMER&lt;/strong&gt;: This should be considered a pre-release version of VistaDB and as such should not be considered stable or safe (or deployed to end users).&amp;nbsp; There may be issues within the code we have not uncovered yet.&lt;/p&gt;
&lt;p&gt;Always make backups of your data.&amp;nbsp; The file format has not changed and all current applications should continue to run.&amp;nbsp; We have made some interface changes, but they are additive - nothing has been removed.&lt;/p&gt;
&lt;h3&gt;NOTES&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;AssemblyVersion changes&lt;/strong&gt; - We are changing the assembly versioning to now just include Major.Minor.&amp;nbsp; This means that your major.minor will be what is visible in the GAC, and will avoid binding issues for each new build.&amp;nbsp; Only new minor builds will have to be rebound.&amp;nbsp; I also greatly simplified the App and Web.config scenarios.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AssemblyVersion &lt;/strong&gt;- 3.6.0.0    &lt;br /&gt;&lt;strong&gt;FileVersion &lt;/strong&gt;- 3.6.85.1&amp;nbsp;&amp;nbsp; MAJOR.MINOR.BUILD.EDITION&lt;/p&gt;
&lt;p&gt;FileVersion is not seen in the GAC, but is visible if you right click a file and go to properties - Details.&amp;nbsp; You can see the File Version on that dialog.&lt;/p&gt;
&lt;p&gt;This should just mean that it is easier to bind against VistaDB.&amp;nbsp; Especially users who build lots of CLR Procs will find that you only have to rebuild them when a minor version increments rather than for each build.&lt;/p&gt;
&lt;h3&gt;ISSUES AND FIXES&lt;/h3&gt;
&lt;p&gt;InvalidFunction exception when exec call to StoredProc and unopened connection - Changed the Preparser to look for this situation and tell you the database connection must be opened first.&amp;nbsp; The engine CAN exec some things without having an open connection (Create database).&amp;nbsp; But when the list of stored procs is attempted to be loaded it fails because the connection is not open.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RAISERROR &lt;/strong&gt;syntax has been added to the parser for TSQL Procs.&amp;nbsp; Note the spelling.&amp;nbsp; This is a bit strange to me, but it is how SQL Server spells it.    &lt;br /&gt;You can now call it like this:&lt;/p&gt;
&lt;p&gt;RAISERROR ( {IntID|StringMessage|Variable} ,Severity, State )   &lt;br /&gt;RAISERROR ( 'An error happened', 1, 1 )&lt;/p&gt;
&lt;p&gt;Severity and State have no meaning in VistaDB, they are present for compatibility reasons.&lt;/p&gt;
&lt;p&gt;Additional arguments to the call are not supported at this time.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PRINT &lt;/strong&gt;syntax has been added.    &lt;br /&gt;PRINT output is not returned within results to queries.&amp;nbsp; It is a separate side-channel of information sent back through the VistaDBConnection.PrintNotification event.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ConnectionString&lt;/strong&gt; new option:&lt;/p&gt;
&lt;p&gt;Transaction Mode=[on|off|ignore]&lt;/p&gt;
&lt;p&gt;On is the default and transactions operate normally    &lt;br /&gt;Off means transactions are not to be attempted, creating one will throw an error    &lt;br /&gt;Ignore means that attempts to create transactions should be ignored.&amp;nbsp; This is useful for people using tools that generate transactions through SQL and are unable to turn them off in the tool (ORMs frequently do this)    &lt;br /&gt;This option has also been added to VistaDBConnectionStringBuilder as the TransactionMode read only property.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;VistaDBDataReader.Read() on a non-result returning command would throw an error due to a missing result set. It will not return false since no results are available.&lt;/p&gt;
&lt;h3&gt;OTHER NON TICKETED ITEMS&lt;/h3&gt;
&lt;p&gt;A lot of internal structure updates from our 4.x dev work.&amp;nbsp; Things of particular note are the way that we match indexes eligible for inclusion with the optimizer.&amp;nbsp; We are still using the same indexes (only those present), but this lays the foundation for us to build temporary or internal indexes for optimization.&amp;nbsp; We have also removed cross object dependencies internally on some objects to avoid pinning them in memory longer than required.&lt;/p&gt;
&lt;p&gt;Most of these internal changes should have little effect on runtime (ok, maybe a slightly smaller footprint in some classes).&lt;/p&gt;
&lt;p&gt;We have simplified the code paths and internal classes in many cases to avoid virtual calls and removed them on internal classes where possible so the JIT optimizer may inline more of these functions as well.&lt;/p&gt;
&lt;p&gt;Databases with large numbers of stored procedures (25+) will load much faster now due to internal changes made in the load structures and how we cache the data from the disk.&amp;nbsp; We don't anticipate any problems, but we want people to test this code in their apps as well.&lt;/p&gt;
&lt;p&gt;Some interfaces have changed as a result of code changes.&amp;nbsp; And a few obsolete methods have been removed from the public interfaces.&amp;nbsp; As an example HasDataSetResult was flagged as obsolete since 3.2 and has now been removed.&lt;/p&gt;
&lt;p&gt;You may also notice some Intellisense cleanup as we have been attempting to go through the public classes and flag designer attributes as non browsable to avoid intellisense confusion of how to use objects.&amp;nbsp; Many of the ADO classes have Design Time properties that are not intended for end users, only Visual Studio.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VistaDBException&lt;/strong&gt; now inherits off of System.Data.Common.DbException instead of straight off of System.Exception. This allows for the generic user of the Provider Factories to trap DB errors and retrieve the provider error code without having to cast into the VistaDB namespace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The DATE() function &lt;/strong&gt;has been deprecated since it was not compatible with SQL Server syntax and caused quite a bit of confusion for users.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BuildVIndex &lt;/strong&gt;has been removed from the Interface.&amp;nbsp; It has been deprecated for quite some time.&amp;nbsp; BuildIndex is the correct function to call.&lt;/p&gt;
&lt;h3&gt;Safety Warning&lt;/h3&gt;
&lt;p&gt;As always make backups of your application databases just in case.&amp;nbsp; We are using this engine with our systems, but we ask that you not publish this edition to users other than if you have your own testers who understand the risks.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=jKh07peAw0o:9krV1BtT768:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=jKh07peAw0o:9krV1BtT768:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=jKh07peAw0o:9krV1BtT768:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=jKh07peAw0o:9krV1BtT768:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=jKh07peAw0o:9krV1BtT768:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/jKh07peAw0o" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/jKh07peAw0o/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/06/19/VistaDB-36-Build-85-Alpha.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=8d8b5bca-3ecd-4061-a6ed-9eb9317c51e1</guid>
      <pubDate>Fri, 19 Jun 2009 15:44:00 -0300</pubDate>
      <category>Builds</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=8d8b5bca-3ecd-4061-a6ed-9eb9317c51e1</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=8d8b5bca-3ecd-4061-a6ed-9eb9317c51e1</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/06/19/VistaDB-36-Build-85-Alpha.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=8d8b5bca-3ecd-4061-a6ed-9eb9317c51e1</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=8d8b5bca-3ecd-4061-a6ed-9eb9317c51e1</feedburner:origLink></item>
    <item>
      <title>How to help us give you better SQL performance</title>
      <description>&lt;p&gt;It can very frustrating trying to help someone who is asking for help, but not giving you what you need to help them.&amp;#160; I wanted to put together this post as a sort of FAQ on how can we help you with things like queries and schema problems.&amp;#160; If we can’t get certain information we often can’t offer more than general guidelines – and those may or may not apply to your problem.&lt;/p&gt;  &lt;h3&gt;Query Performance&lt;/h3&gt;  &lt;p&gt;In general we do not provide support on query performance.&amp;#160; There are just too many ways to write the same query, some are fast, some are slow.&amp;#160; There is often no way to know short of trying them.&amp;#160; In most cases either query is good enough and people just move on.&amp;#160; But what if your query needs a certain response time?&amp;#160; &lt;/p&gt;  &lt;p&gt;If you are simply taking a query from Access builder and it is too slow, that is not good enough. Did you try ANYTHING else?&amp;#160; Check your indexes?&amp;#160; Anything?&lt;/p&gt;  &lt;h3&gt;Engine one off code and customization&lt;/h3&gt;  &lt;p&gt;Microsoft SQL engines (Access, SQL Server, and SQL CE to a lesser extent) will rewrite poorly written queries for you.&amp;#160; They sometimes build indexes, temp indexes, lookup tables, cross reference lookup temp systems, all sorts of things under the hood that you may not know about.&amp;#160; &lt;/p&gt;  &lt;p&gt;So why don’t we do all that?&amp;#160; Microsoft spent &lt;strong&gt;$1 BILLION&lt;/strong&gt; on the company that provided that technology.&amp;#160; Yes, that is with a B – wow.&amp;#160; And that is part of the reason SQL Server is so large.&amp;#160; &lt;/p&gt;  &lt;p&gt;It has a lot of code paths that are special cased code for one off scenarios.&amp;#160; We don’t do that because we want to stay small and lightweight, and because each of those cases you add also have to be documented, tested, and maintained.&amp;#160; Each of those add a lot to our workload.&amp;#160; If you have 10 special cases to 10 functions you now have 100 combinations to test.&amp;#160; Start chaining that out through all the clauses and you end up with huge complexity for test purposes.&lt;/p&gt;  &lt;h3&gt;Special Cases?&lt;/h3&gt;  &lt;p&gt;Does that mean we will never special case code?&amp;#160; No. We will do it, but only with really good evidence that it is going to impact a lot of use cases.&amp;#160; How do we build those use cases?&amp;#160; &lt;strong&gt;Use cases is where you can really help us&lt;/strong&gt;.&amp;#160; We have a lot of usage scenarios based upon standard ADO.NET patterns and practices.&amp;#160; Then we have quite a few from our own applications we built that broke those patterns.&amp;#160; Add to that problem reports from users, and you start to get a pretty good comprehensive coverage of SQL patterns.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Entity Framework SQL patterns are totally different&lt;/h3&gt;  &lt;p&gt;Entity Framework is one use case that recently broke a lot of scenarios for us.&amp;#160; The short lived pattern of EF questions, and the way they are structured perform very poorly with our engine because they are so far out of our normal patterns.&amp;#160; We have a pretty good sampling of these now and we will work on them in a future release to incorporate what we learned.&lt;/p&gt;  &lt;h3&gt;Submit Use Cases&lt;/h3&gt;  &lt;p&gt;We are more than happy to accept use cases from users to incorporate into our testing.&amp;#160; As we go through and optimize areas of the code we try to look at all the scenarios we have and ensure we cover the majority of them.&amp;#160; &lt;/p&gt;  &lt;p&gt;Now if you have a statement with 10 inner joins mixing outer joins across tables that will probably never make it into the mainstream test pool because it is just not a common operation.&amp;#160; Likewise, people who write up contrived scenarios that are possible in SQL Server and not us will not be included.&amp;#160; There must be valid reasons for a test.&amp;#160; Just because a consultant knew some whizz bang way to get SQL Server to do something does not mean we are going to implement that one off scenario from SQL Server code.&lt;/p&gt;  &lt;h2&gt;What to include&lt;/h2&gt;  &lt;p&gt;A good use case should include all of the following information:&lt;/p&gt;  &lt;h3&gt;Database Schema &lt;/h3&gt;  &lt;p&gt;We have routines to full any schema with random data for test purposes.&amp;#160; But before we can do that we need to see actual schema.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Schema      &lt;ul&gt;       &lt;li&gt;Fields like TEXT and IMAGE should also include an expected average size and datatype being stored &lt;/li&gt;        &lt;li&gt;Nullable fields should include % of expected NULL entries &lt;/li&gt;        &lt;li&gt;Any text based fields with Locale specific settings should be included &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Indexes &lt;/li&gt;    &lt;li&gt;Relationships &lt;/li&gt;    &lt;li&gt;Triggers &lt;/li&gt;    &lt;li&gt;Typical number of rows per table for an average user &lt;/li&gt;    &lt;li&gt;Extreme number of rows for a power user (if applicable to your product) &lt;/li&gt;    &lt;li&gt;Database Page size and Locale &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Queries&lt;/h3&gt;  &lt;p&gt;The queries themselves are of course more difficult in some ways.&amp;#160; Often a slight rewrite of the query will result in radical performance differences.&amp;#160; Each SQL query that is important should be split into a separate item for test purposes.&amp;#160; If queries must run as a combination to answer a single business logic question they should be grouped together to demonstrate the application use scenario.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SQL Query      &lt;ul&gt;       &lt;li&gt;Number of times this query is run in an average session &lt;/li&gt;        &lt;li&gt;Number of expected rows returned on average &lt;/li&gt;        &lt;li&gt;Relative importance of this query to your application ( a scale of 1-10 is often all that is required here) &lt;/li&gt;        &lt;li&gt;Business Purpose of this query – it is part of a chain of queries? &lt;/li&gt;        &lt;li&gt;Are there interactive or free form query elements? (like search in an application) &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Stored Procedures      &lt;ul&gt;       &lt;li&gt;Why is this code in a stored procedure? &lt;/li&gt;        &lt;li&gt;Could this logic be duplicated in C#/VB.Net? &lt;/li&gt;        &lt;li&gt;Business purpose of the procedure &lt;/li&gt;        &lt;li&gt;Number of times called in an average session &lt;/li&gt;        &lt;li&gt;Relative importance of this query to your application &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Application Information&lt;/h3&gt;  &lt;p&gt;What is the expected runtime for your application?&amp;#160; Does it run on multi processor machines, or does your application only ever run a single query?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Application Purpose      &lt;ul&gt;       &lt;li&gt;Target Specs          &lt;ul&gt;           &lt;li&gt;Memory usage &lt;/li&gt;            &lt;li&gt;Diskspace &lt;/li&gt;            &lt;li&gt;.Net runtime &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;Threading internal to application &lt;/li&gt;        &lt;li&gt;Number of users          &lt;ul&gt;           &lt;li&gt;Readers vs Writers &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;Caching strategy – is any data cached in your app to prevent frequent lookups? &lt;/li&gt;        &lt;li&gt;Special application needs &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Submitting your information&lt;/h2&gt;  &lt;p&gt;I think we will need to create a form to allow users to submit this type of information.&amp;#160; Should it be a web form you fill in, or some type of desktop app that can analyze your schema and ask you questions?&amp;#160; What do you think?&lt;/p&gt;  &lt;p&gt;As always we appreciate your feedback as we continue to make VistaDB better and more robust for your needs.&amp;#160; &lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=0bQqe6zMqoU:1ZqXSoK8_c4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=0bQqe6zMqoU:1ZqXSoK8_c4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=0bQqe6zMqoU:1ZqXSoK8_c4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=0bQqe6zMqoU:1ZqXSoK8_c4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=0bQqe6zMqoU:1ZqXSoK8_c4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/0bQqe6zMqoU" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/0bQqe6zMqoU/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/06/18/How-to-help-us-give-you-better-SQL-performance.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=00ba7108-5881-42c1-9fec-36e7e33aa042</guid>
      <pubDate>Thu, 18 Jun 2009 17:16:20 -0300</pubDate>
      <category>Articles</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=00ba7108-5881-42c1-9fec-36e7e33aa042</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=00ba7108-5881-42c1-9fec-36e7e33aa042</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/06/18/How-to-help-us-give-you-better-SQL-performance.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=00ba7108-5881-42c1-9fec-36e7e33aa042</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=00ba7108-5881-42c1-9fec-36e7e33aa042</feedburner:origLink></item>
    <item>
      <title>Microsoft deprecating Oracle Client from ADO.NET 4</title>
      <description>&lt;p&gt;Microsoft has announced through a blog that the ADO.NET 4 spec will mark the &lt;a href="http://blogs.msdn.com/adonet/archive/2009/06/15/system-data-oracleclient-update.aspx"&gt;Oracle client as deprecated&lt;/a&gt; with plans for removal.&amp;nbsp; They are also recommending that users go to a third party Oracle provider.&lt;/p&gt;
&lt;p&gt;Visual Studio Magazine has &lt;a href="http://visualstudiomagazine.com/articles/2009/06/16/microsoft-kills-oracle-data-provider-for-adonet.aspx"&gt;picked up the story&lt;/a&gt; now as well.&lt;/p&gt;
&lt;h3&gt;Stop Helping the Competition?&lt;/h3&gt;
&lt;p&gt;Wow, this will mark the first time an ADO.NET provider has been removed from the .Net framework.&amp;nbsp; Is this a case of Microsoft trimming the fat, or pushing Oracle?&amp;nbsp; I always thought it a bit of a free ride that Microsoft was helping Oracle by building their provider for them, but no one else got such special treatment.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And equally as strange to me was that Oracle was built in, when no other third party could get their provider included.&amp;nbsp; I guess they are going to make that equal across the board, no one else gets included.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Another reason to stay managed code!&lt;/h3&gt;
&lt;p&gt;This is yet another reason to stay with fully managed code as well.&amp;nbsp; You won&amp;rsquo;t have provider install issues that these guys are going to have going forward.&amp;nbsp; Oracle client users are now going to have to install a provider that probably will not be 100% managed code.&amp;nbsp; That is going to mean two or more distributions (32 / 64 bit), and probably issues with medium trust support.&lt;/p&gt;
&lt;p&gt;VistaDB of course is 100% managed code and has no such issues.&amp;nbsp; Since we can deploy a single assembly to both 32 and 64 bit machines we get around the entire install issue.&amp;nbsp; And since we are 100% managed code with no DllImports you never have a trust issue with the admin settings on the box.&lt;/p&gt;
&lt;h3&gt;Oracle = Large?&lt;/h3&gt;
&lt;p&gt;This is going to affect a lot of Oracle developers eventually.&amp;nbsp; But since most Oracle shops are pretty large companies maybe it is not such a big deal anyway.&amp;nbsp; Larger companies take a long time to migrate from one platform to the next.&amp;nbsp; Let&amp;rsquo;s fact it, .Net 4 might be 10 years away for them anyway.&amp;nbsp; Some of them just made the move to .Net 2.&lt;/p&gt;
&lt;p&gt;Any smaller shops using Oracle?&amp;nbsp; I honestly don&amp;rsquo;t know any, but we walk mostly in SQL Server circles.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=QYAgzUG-qJs:Sw1PhwGbboc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=QYAgzUG-qJs:Sw1PhwGbboc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=QYAgzUG-qJs:Sw1PhwGbboc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=QYAgzUG-qJs:Sw1PhwGbboc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=QYAgzUG-qJs:Sw1PhwGbboc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/QYAgzUG-qJs" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/QYAgzUG-qJs/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/06/16/Microsoft-deprecating-Oracle-Client-from-ADONET-4.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=1fc2bc71-4087-47d1-b15b-43ba4090f574</guid>
      <pubDate>Tue, 16 Jun 2009 13:56:00 -0300</pubDate>
      <category>Industry News</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=1fc2bc71-4087-47d1-b15b-43ba4090f574</pingback:target>
      <slash:comments>14</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=1fc2bc71-4087-47d1-b15b-43ba4090f574</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/06/16/Microsoft-deprecating-Oracle-Client-from-ADONET-4.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=1fc2bc71-4087-47d1-b15b-43ba4090f574</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=1fc2bc71-4087-47d1-b15b-43ba4090f574</feedburner:origLink></item>
    <item>
      <title>New features and changes coming in VistaDB 3.6</title>
      <description>&lt;p&gt;As I was preparing the release notes for the upcoming 3.6 Alpha release I thought it might be a good idea to also just post a general update to everyone on the blog.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;VistaDB 3.6 Alpha&lt;/h2&gt;
&lt;p&gt;We are planning an Alpha release of 3.6 hopefully this week.&amp;nbsp; We have a few minor issues before we can let it loose, but we are very close now.&amp;nbsp; As with all of our prerelease versions this will only be available to existing VistaDB subscribers.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This release was designed as an overall update to the product line from user requests and feedback we have received.&amp;nbsp; Some of these items were added to the 4.0 line and are being ported, others were built just for this release.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Assembly Version change &lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;We are going to start setting our Assembly version Major.Minor.0.0 like Microsoft.&amp;nbsp; A change will only occur when a breaking change is introduced.&amp;nbsp; We will start using the Assembly File Version as the build information for users to know what build they are running.&amp;nbsp; This will allow us to not need Policy files or binding redirects until a breaking change is introduced.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Installer change&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The plan is to move to a newer installer that will let us build multiple versions easier on the backend through our build scripts.&amp;nbsp; Currently each build takes us about 1/2 a day to complete and we would very much like to automate that process.&amp;nbsp; We are moving to Tarma as the desktop installer and I can't wait for everyone to see the new install process.&lt;/p&gt;
&lt;h3&gt;Enum functions cache&lt;/h3&gt;
&lt;p&gt;The internal enum functions that pull information from a database for things like Indexes, stored procs, etc are all very paranoid about reading from Disk.&amp;nbsp; There are many cases where this enumeration is quite expensive, and caching it at the database level should improve performance for a lot of meta data operations (especially things that need to get a list of procs like EXEC, and the DataBuilder).&lt;/p&gt;
&lt;h3&gt;Transaction Mode&lt;/h3&gt;
&lt;p&gt;Adding a new flag to let you tell the engine you don't ever want to use transactions, even if the SQL code calls for them.&amp;nbsp; This is useful in situations where your ORM or other library is generating SQL code that is using transactions for every call.&amp;nbsp; This will be a connection string flag to allow you to turn them on / off / or ignore them entirely.&amp;nbsp; This will allow finer grain control from the user perspective at connection time for transaction support (which can be quite expensive).&lt;/p&gt;
&lt;h3&gt;Namespace cleanup&lt;/h3&gt;
&lt;p&gt;We are hiding some methods that are not intended for end users, and cleaning up some others to more closely match SQL Server.&lt;/p&gt;
&lt;h3&gt;Exceptions Inheritance&lt;/h3&gt;
&lt;p&gt;VistaDBException now inherits off of System.Data.Common.DbException instead of straight off of System.Exception. This allows for generics user of the Provider Factories to trap DB errors and retrieve the provider error code without having to cast into the VistaDB namespace.&lt;/p&gt;
&lt;h3&gt;Data Builder UI Changes&lt;/h3&gt;
&lt;p&gt;We have some more UI changes we would like to make to the Data Builder.&amp;nbsp; I don't want to say too much at this point, but it is to make your life easier writing SQL in Data Builder.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;SQL Syntax Changes&lt;/strong&gt;&lt;/h2&gt;
&lt;h3&gt;RAISERROR Support&lt;/h3&gt;
&lt;p&gt;SQL Syntax support for RAISERROR within TSQL Procs.&amp;nbsp; This feature has been on our list for a while now and I am quite pleased with the initial implementation.&amp;nbsp; There are also some new guidelines around using TSQL commands like this in the help file.&lt;/p&gt;
&lt;h3&gt;PRINT Syntax&lt;/h3&gt;
&lt;p&gt;This has been requested a lot.&amp;nbsp; The ability to print from within SQL and receive it as a part of the log in the DataBuilder, or subscribe to those messages from within your own application.&amp;nbsp; New documentation has also been added for this function with some guidelines as well.&lt;/p&gt;
&lt;h3&gt;DATE Syntax&lt;/h3&gt;
&lt;p&gt;DATE was the older VistaDB 2.x syntax for the SQL Server function GETDATE().&amp;nbsp; It has been marked as deprecated for a little while, and has always been flagged as not being compatible with SQL Server.&amp;nbsp; It has caused more than it&amp;rsquo;s fair share of confusion so we are removing it in this release.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Quick Roadmap Updated&lt;/h2&gt;
&lt;p&gt;Just in case you were not aware we do keep a &lt;a href="http://www.vistadb.net/roadmap.aspx" target="_blank"&gt;roadmap page&lt;/a&gt; on the website.&amp;nbsp; And don&amp;rsquo;t forget to look at the &lt;a href="http://www.vistadb.net/sitemap.aspx" target="_blank"&gt;sitemap&lt;/a&gt; for other pages that maybe you didn&amp;rsquo;t know existed.&lt;/p&gt;
&lt;h2&gt;VistaDB Continues Moving Forward&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;VistaDB continues to move forward along our design goals for the 4.x branch as well.&amp;nbsp; We are trying very hard though to not let the 3.x product line fall behind while we work on that branch.&amp;nbsp; I hope the 3.6 release will solidify in your mind that we continue to think of our customers at each step of the journey.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=oWsTTYKwy4M:pGXr7eB7ico:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=oWsTTYKwy4M:pGXr7eB7ico:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=oWsTTYKwy4M:pGXr7eB7ico:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=oWsTTYKwy4M:pGXr7eB7ico:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=oWsTTYKwy4M:pGXr7eB7ico:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/oWsTTYKwy4M" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/oWsTTYKwy4M/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/06/15/New-features-and-changes-coming-in-VistaDB-36.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=110d74c6-75c6-4afb-be3e-2de53ea452ad</guid>
      <pubDate>Mon, 15 Jun 2009 01:05:00 -0300</pubDate>
      <category>VistaDB News</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=110d74c6-75c6-4afb-be3e-2de53ea452ad</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=110d74c6-75c6-4afb-be3e-2de53ea452ad</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/06/15/New-features-and-changes-coming-in-VistaDB-36.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=110d74c6-75c6-4afb-be3e-2de53ea452ad</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=110d74c6-75c6-4afb-be3e-2de53ea452ad</feedburner:origLink></item>
    <item>
      <title>Purchasing the correct VistaDB license</title>
      <description>&lt;p&gt;Looking to purchase VistaDB, but confused as to which license to purchase?&amp;#160; You can always contact us through a &lt;a href="https://accounts.vistadb.net/Contact-General.aspx"&gt;Quick Ticket&lt;/a&gt; for help.&amp;#160; But please take a few moments to read through the definitions and outline below.&lt;/p&gt;  &lt;h2&gt;Common Customer Scenarios&lt;/h2&gt;  &lt;p&gt;Open Source projects, hobbyists without the need for Visual Studio tools and other volunteer efforts with no commercial goals should look at &lt;a href="http://www.vistadb.net/vistadb3/vistadb-expresslimits.aspx"&gt;VistaDB Express&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Any size entity working on a product that has goals to realize sales at some point must purchase a full license to VistaDB.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Here are some scenarios that are all acceptable for the &lt;a href="https://accounts.vistadb.net/Pricelist-Personal.aspx"&gt;VistaDB Personal Edition&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://accounts.vistadb.net/Pricelist-Personal.aspx#FAQ"&gt;Personal Edition FAQ&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Just starting your own company and you have no employees &lt;/li&gt;    &lt;li&gt;Working on something for your family, or school &lt;/li&gt;    &lt;li&gt;Prototyping an idea alone at home with the intent to sell it one day &lt;/li&gt;    &lt;li&gt;Single person consultants who build solutions for clients and do not provide them with the source &lt;/li&gt;    &lt;li&gt;Building a website for your own personal use &lt;/li&gt;    &lt;li&gt;Building a product for sale by yourself (regardless of your legal entity) – As long as you are a 1 man shop of any legal entity type you may use the Personal Edition &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The following situations all require &lt;a href="https://accounts.vistadb.net/Pricelist-Business.aspx"&gt;VistaDB Business Licenses&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://accounts.vistadb.net/Pricelist-Business.aspx#FAQ"&gt;Business Edition FAQ&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Consultants who provide the client with source (commonly referred to as a work for hire agreement) must get the client company approval to use VistaDB, and they must acquire a valid license.&amp;#160; If you build a system for a large company they must purchase a Corporate License.&lt;/p&gt;  &lt;p&gt;Any group of 2 or more people working on a project that involves VistaDB must purchase a VistaDB Business License.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Building a product for commercial &lt;/li&gt;    &lt;li&gt;Building a website under contract – the customer must hold the VistaDB license unless you specifically do not work for hire and retain all rights to your code &lt;/li&gt;    &lt;li&gt;Building an internal tool for your company to automate tedious tasks &lt;/li&gt;    &lt;li&gt;Contracts that contain Escrow agreements cannot include VistaDB.&amp;#160; Both parties must purchase a valid VistaDB license with Source if they desire it.&amp;#160; Source licenses are not transferable under any condition. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Personal Edition&lt;/h2&gt;  &lt;p&gt;There is now only one option available for Personal Editions, a single year with support.&amp;#160; The 90 day option was being abused by companies so we have removed it.&amp;#160; &lt;/p&gt;  &lt;h3 align="center"&gt;We will cancel accounts who purchase incorrect editions for the intent of fraud.&lt;/h3&gt;  &lt;p align="left"&gt;We do monitor every purchase for compliance with our license guidelines, if we see someone purchasing a Personal Edition on a Corporate American Express it is definitely going to throw up some red flags.&amp;#160; &lt;/p&gt;  &lt;p align="left"&gt;Since changing the pricing structure and enforcing our policies on all new purchases we have seen a large increase in Business Edition sales.&amp;#160; This is important for all of us as it ensures that we can continue to provide the best possible product at the best possible price.&amp;#160; When users defraud us of the correct license they are hurting the entire community of VistaDB users.&lt;/p&gt;  &lt;h2&gt;Business Editions&lt;/h2&gt;  &lt;p&gt;Small Business 2-24 employees may purchase this license for the purposes of development.&amp;#160; The cost per developer install is ~$70, but each workstation must activated one at a time.&lt;/p&gt;  &lt;p&gt;The Corporate license provides a key that may be used on any number of machines at the same physical location without the need to activate each individual workstation.&amp;#160; Often this benefit is reason enough for many Small Business owners to buy this edition as well.&lt;/p&gt;  &lt;h2&gt;Support &lt;/h2&gt;  &lt;p&gt;We recognize that the current pricing does not take into account companies who develop internal tools compared external products for resale.&amp;#160; We know this is a flaw in the current system (no system is perfect).&amp;#160; Companies who develop commercial products for resale do typically generate a much higher load on our support system.&amp;#160; We plan to address this in a future pricing change.&lt;/p&gt;  &lt;p&gt;Many database companies require a percentage of sales or some level of commitment for payment at certain sales volumes if you are going to embed the engine into your commercial application.&amp;#160; We really do not want to go to this model as it would require a large amount of tracking and maintenance that we simply do not have the resources to perform.&amp;#160; We will have some sort of per install fee associated with the server when it becomes available.&lt;/p&gt;  &lt;p&gt;There has also been a lot of internal discussion about going to a ticketing system for support.&amp;#160; We would include a set number of tickets with a subscription, after which the client must purchase additional tickets.&amp;#160; This would probably cut down on the frivolous contacts and those just looking for debugging help on their application, but is another system we would have to build and maintain.&amp;#160; We may do it just to help us cover the cost of support.&lt;/p&gt;  &lt;p&gt;As always the Community Support Forums are for anyone to ask questions, but they are not technical support.&amp;#160; Only ticketed items are considered technical support.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=SCWp6Jp00NI:BMBdubrc6YE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=SCWp6Jp00NI:BMBdubrc6YE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=SCWp6Jp00NI:BMBdubrc6YE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=SCWp6Jp00NI:BMBdubrc6YE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=SCWp6Jp00NI:BMBdubrc6YE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/SCWp6Jp00NI" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/SCWp6Jp00NI/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/06/09/Purchasing-the-correct-VistaDB-license.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=1c38b976-ff37-4c36-938c-08864f2c722e</guid>
      <pubDate>Tue, 09 Jun 2009 16:05:12 -0300</pubDate>
      <category>VistaDB News</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=1c38b976-ff37-4c36-938c-08864f2c722e</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=1c38b976-ff37-4c36-938c-08864f2c722e</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/06/09/Purchasing-the-correct-VistaDB-license.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=1c38b976-ff37-4c36-938c-08864f2c722e</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=1c38b976-ff37-4c36-938c-08864f2c722e</feedburner:origLink></item>
    <item>
      <title>Third party complexities</title>
      <description>&lt;p&gt;We have been hit quite a bit lately with tickets and requests from users around third party tools.&amp;#160; Yes, third party tools can simplify your development efforts in some cases.&amp;#160; But are you really making your support requirements more complex?&lt;/p&gt;  &lt;h2&gt;Debugging third party tools&lt;/h2&gt;  &lt;p&gt;We simply do not have the resources to help users debug issues with third party tools.&amp;#160; In many cases the questions are usually very specific around this vendors tools and how do the features map up to traditional ADO.NET use cases.&amp;#160; We simply have no idea how the vendor intended for you to perform certain actions.&amp;#160; &lt;/p&gt;  &lt;p&gt;Did the vendor encapsulate you from VistaDB?&amp;#160; If you are not working with ADO.NET constructs we will have no idea how to help.&amp;#160; Either the vendor did or did not encapsulate you from the database.&lt;/p&gt;  &lt;h2&gt;Encapsulation from the database?&lt;/h2&gt;  &lt;p&gt;A fundamental property of encapsulation is that it hides the underlying complexity from the user.&amp;#160; The user should only have to know what the component does, or how it achieves the underlying work.&amp;#160; Encapsulation should also protect the user by not allowing them to get the underlying object into an inconsistent state.&lt;/p&gt;  &lt;p&gt;Another benefit of encapsulation is that in good implementation it should reduce the complexity of the system, and limit interdependencies between software components.&lt;/p&gt;  &lt;p&gt;Relational Databases are complex.&amp;#160; The ADO.NET data model is complex.&amp;#160; When you start looking at the knowledge required to navigate between SQL, relation data, and ADO.NET it can be quite formidable.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h2&gt;Encapsulation can also mean data hiding&lt;/h2&gt;  &lt;p&gt;In C++ classes I used to teach that encapsulation also meant data hiding (one of the tenants of good object oriented design).&amp;#160; &lt;/p&gt;  &lt;p&gt;How can you debug or diagnose a problem in their tool?&amp;#160; Any tool that is wrapping VistaDB to hide the complexities of databases from your code is now responsible for that database management.&amp;#160; Either the vendor hides you from the complexities or they don’t – there is not much room for a middle ground here.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you still have to drop to ADO.NET code to do things like build relationships or do reporting then did the tool really save you that much?&lt;/p&gt;  &lt;h2&gt;What should you do?&lt;/h2&gt;  &lt;p&gt;Contact the vendor and ask for their support.&amp;#160; If the vendor has an actual issue with VistaDB not performing an expected action then &lt;strong&gt;the vendor should contact us for support&lt;/strong&gt;.&amp;#160; You are after all supposed to be encapsulated from having to think at the database layer.&lt;/p&gt;  &lt;p&gt;Many times we find that the vendor has a bug in their application, or in product documentation.&amp;#160; We cannot help everyone track down issues in every third party tool.&lt;/p&gt;  &lt;h2&gt;Tools for VistaDB Express?&lt;/h2&gt;  &lt;p&gt;Vendors who sell commercial products may NOT use VistaDB for their development.&amp;#160; It is a clear violation of our &lt;a href="http://www.vistadb.net/about/EULA.aspx"&gt;EULA&lt;/a&gt;.&amp;#160; All commercial vendors must have a full license in order to build tools that expose any functionality for VistaDB.&amp;#160; &lt;/p&gt;  &lt;p&gt;There have been complaints to us from a few vendors who were only building when a new VistaDB Express build was released because they did not have a valid VistaDB license.&amp;#160;&amp;#160; If you sell a product that uses VistaDB you must have a commercial license, period.&amp;#160; &lt;/p&gt;  &lt;h2&gt;Third Party Tickets&lt;/h2&gt;  &lt;p&gt;We will not accept tickets for third party tools without &lt;strong&gt;reproducible error cases for VistaDB runtimes&lt;/strong&gt;. Issues that are generic in nature such as “SQL runs on SQL Server” or performance related issues will not be supported. &lt;/p&gt;  &lt;p&gt;If the tool simply does not return correct results, or is somehow performing incorrectly we will not modify our database engine to fix a broken third party tool.&amp;#160; This has been an issue before with tools that relied on incorrect behavior or undocumented features.&amp;#160; &lt;/p&gt;  &lt;p&gt;If the tool is encapsulating you from the database, it had better know how to generate compliant SQL for VistaDB.&amp;#160; In many cases poorly written SQL queries will perform incredibly bad on VistaDB.&amp;#160; If you have no ability to modify them we cannot help.&amp;#160; &lt;/p&gt;  &lt;h3&gt;Zero modification of runtime or databases&lt;/h3&gt;  &lt;p&gt;The only way tools should be interfacing with VistaDB is through our runtime.&amp;#160; No third party tool may modify the VistaDB database files directly.&amp;#160; Any vendor who tells you they manipulate the database directly is lying.&amp;#160; They have to run through the engine or they are putting your application at risk.&amp;#160; We work hard to ensure that interfaces remain constant in expected behavior, but the underlying file format can and will change over time.&amp;#160; &lt;/p&gt;  &lt;h2&gt;Is VistaDB really supported and tested?&lt;/h2&gt;  &lt;p&gt;Ask your vendor if they support VistaDB in their product.&amp;#160; If their answer is “we load .Net Provider Factories” then that means they have probably not tested it with VistaDB.&amp;#160; Do not accept a blanket – we load others so it should work answer.&amp;#160; &lt;/p&gt;  &lt;p&gt;Are you going to trust that to your customers?&amp;#160; Most of the time these vendors when pressed later about an actual bug will usually leave the user without a fix because “it works with the [some other] database engine”.&amp;#160; Don’t accept that answer.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you are purchasing a product because you have been told it supports VistaDB make sure the vendor will actually support their product.&amp;#160; If they give you a blanket answer about running through a test suite, think long and hard about where you will be if an error occurs in your application.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you have no ability to fix the tool you will be in a very bad place with your customers, through no fault of VistaDB.&amp;#160; Even though we have spent many, many hours trying to help customers get resolution from third party tools we cannot continue to do so.&amp;#160; &lt;/p&gt;  &lt;h2&gt;We support VistaDB&lt;/h2&gt;  &lt;p&gt;We support VistaDB, we test constantly for compatibility with ADO.NET and all known published standards.&amp;#160;&amp;#160; When we find issues we strive to fix them as quickly as we can and to notify the entire community about those fixes.&lt;/p&gt;  &lt;p&gt;Make sure the third party tool you choose is really going to save you time and energy.&amp;#160; I hate to see frustrated customers dealing with situations where we can’t help them either.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=vOorCaYdk9k:9Zcg-_DO3gY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=vOorCaYdk9k:9Zcg-_DO3gY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=vOorCaYdk9k:9Zcg-_DO3gY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=vOorCaYdk9k:9Zcg-_DO3gY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=vOorCaYdk9k:9Zcg-_DO3gY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/vOorCaYdk9k" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/vOorCaYdk9k/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/06/08/Third-party-complexities.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=ddede6c3-e129-4966-bbd3-8b79af23bf76</guid>
      <pubDate>Mon, 08 Jun 2009 18:43:55 -0300</pubDate>
      <category>Articles</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=ddede6c3-e129-4966-bbd3-8b79af23bf76</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=ddede6c3-e129-4966-bbd3-8b79af23bf76</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/06/08/Third-party-complexities.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=ddede6c3-e129-4966-bbd3-8b79af23bf76</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=ddede6c3-e129-4966-bbd3-8b79af23bf76</feedburner:origLink></item>
    <item>
      <title>VistaDB 3.5 Build 84 Source Edition</title>
      <description>&lt;p&gt;The Build 84 Source Edition Update is now available within the Account Manager site.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;See the &lt;a href="http://www.vistadb.net/blog/post/2009/05/15/VistaDB-35-Build-84.aspx"&gt;Build 84 release notes&lt;/a&gt; for information about what is included in the current source.&lt;/p&gt;
&lt;h2&gt;VistaDB Source Edition Information&lt;/h2&gt;
&lt;p&gt;The full source of the VistaDB engine is made available to companies through a source license agreement.&amp;nbsp; The source license also requires an active and current subscription to VistaDB.&lt;/p&gt;
&lt;p&gt;The purpose of the Source Code is edition is NOT to provide daily builds. It is intended similar to how a source code escrow works.&lt;/p&gt;
&lt;p&gt;At each major milestone companies sync up the source code in order to ensure stability in the event one company ceases to exist. We provide these drops at infrequent intervals because the majority of the time the individual builds are not important for a company.&lt;/p&gt;
&lt;p&gt;If you want to run your application off the source builds that is fine, but always realize there will be a delay between fixes and source releases. Most companies do not ship nearly as frequently as we do and an occasional source drop gives them time to incorporate at their next update cycle rather than trying to track our current builds.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;What&amp;rsquo;s included?&lt;/h2&gt;
&lt;p&gt;Complete engine source code. Everything you need to build the VistaDB 3 engine for Dot Net 2.0 and CF platforms.&lt;/p&gt;
&lt;h2&gt;What&amp;rsquo;s not included?&lt;/h2&gt;
&lt;p&gt;There are a few things excluded from the Source Edition. Things like our private keys we use to sign the assemblies, the tools we use to generate the API documentation, the methods we use to generate trial versions of the assemblies, Visual Studio plugins and a few internal tools.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: If you load the solutions and try to build you will get errors about the key files missing. Use the SN tool to generate new strongly named keys.&lt;/p&gt;
&lt;h2&gt;What can you do with the source?&lt;/h2&gt;
&lt;p&gt;The biggest reasons for owning the source is probably peace of mind. For some companies and business sectors having the code is a must for any serious development effort, for others it is just an insurance policy in case something happens to VistaDB Software.&lt;/p&gt;
&lt;p&gt;You can build a complete database engine and customize it for your own products and services.&lt;/p&gt;
&lt;p&gt;You can modify the engine to perform specific needs for your organization.&lt;/p&gt;
&lt;p&gt;You do not have to share any custom modifications you make to the source back to VistaDB.&lt;/p&gt;
&lt;h2&gt;What can you NOT do with the source?&lt;/h2&gt;
&lt;p&gt;You cannot create a product to compete directly with VistaDB or to replace VistaDB. You cannot create any API based product intended to give third parties access to VistaDB file formats without them owning a valid license to VistaDB. You cannot create an open source product, or release any of the code to the public or any third party. You may not license the engine, components or DLL to any third party as a standalone product.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=5KW-xin5cpY:sJxp2yaNqVg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=5KW-xin5cpY:sJxp2yaNqVg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=5KW-xin5cpY:sJxp2yaNqVg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=5KW-xin5cpY:sJxp2yaNqVg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=5KW-xin5cpY:sJxp2yaNqVg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/5KW-xin5cpY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/5KW-xin5cpY/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/06/04/VistaDB-35-Build-84-Source-Edition.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=3b10c90b-df68-4b8e-8cd1-442ca69df942</guid>
      <pubDate>Thu, 04 Jun 2009 17:39:00 -0300</pubDate>
      <category>Builds</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=3b10c90b-df68-4b8e-8cd1-442ca69df942</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=3b10c90b-df68-4b8e-8cd1-442ca69df942</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/06/04/VistaDB-35-Build-84-Source-Edition.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=3b10c90b-df68-4b8e-8cd1-442ca69df942</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=3b10c90b-df68-4b8e-8cd1-442ca69df942</feedburner:origLink></item>
    <item>
      <title>VistaDB 3.5 Express Free Embedded SQL Database for .Net</title>
      <description>&lt;h4&gt;The update to VistaDB Express to the 3.5 product line is now available.&lt;/h4&gt;
&lt;h3&gt;What is it?&lt;/h3&gt;
&lt;p&gt;VistaDB Express is a &lt;strong&gt;free edition of VistaDB &lt;/strong&gt;for non commercial use.&amp;nbsp; This includes hobbyists, mono developers, open source projects, personal websites, user groups, sample application, schools, and much much more.&lt;/p&gt;
&lt;h3&gt;Why an Express Edition?&lt;/h3&gt;
&lt;p&gt;We get asked about distribution with free and open source projects (especially mono developers), we needed&amp;nbsp; a license to specifically help these developers use all the cool features of VistaDB in their community as well.&lt;/p&gt;
&lt;p&gt;Microsoft decided a long time ago that the Express Development tool (VB Express, C# Express, C++ Express) editions are not allowed to load third party plugins.&amp;nbsp; These editions were specifically aimed at the non professional developer community.&amp;nbsp; Since they can't load the GUI plugins for Visual Studio 2005 and 2008 anyway, we decided to simplify the offering for these users.&lt;/p&gt;
&lt;h3&gt;Where do I get it?&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://download.vistadb.net/public-downloads.aspx"&gt;Get VistaDB 3.5 Express here&lt;/a&gt; or the download the &lt;a href="http://download.vistadb.net/TrialStart.aspx"&gt;VistaDB 30 day trial&lt;/a&gt; if you are a commercial entity.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;VistaDB Express Highlights&lt;/h2&gt;
&lt;p&gt;Designed for use with Microsoft Visual Studio Express builds for personal projects, there are no Visual Studio plugins.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No Server Explorer or GUI Data Binding (Express Editions cannot load them anyway) &lt;/li&gt;
&lt;li&gt;May not be used for commercial purposes &lt;/li&gt;
&lt;li&gt;No in memory databases &lt;/li&gt;
&lt;li&gt;No Isolated storage support &lt;/li&gt;
&lt;li&gt;Database files may not be renamed (must be VDB3) &lt;/li&gt;
&lt;li&gt;No Compact Framework support &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Even with those restrictions VistaDB Express still has a lot of things you can't get from SQL CE:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shared Hosting Support &lt;/li&gt;
&lt;li&gt;ASP.Net websites with connection pooling support &lt;/li&gt;
&lt;li&gt;CLR Procs &amp;ndash; managed stored procedures &lt;/li&gt;
&lt;li&gt;SQL Stored Procedures &amp;ndash; highly compatible with SQL Server TSQL Procs &lt;/li&gt;
&lt;li&gt;User Defined Functions (UDF) - support for managed assembly UDF functions&lt;/li&gt;
&lt;li&gt;Updatable Views &lt;/li&gt;
&lt;li&gt;SQL Exception Handling &amp;ndash; Try catch support within SQL Procs &lt;/li&gt;
&lt;li&gt;XCopy deployable Data Builder GUI for managing your database &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.vistadb.net/vistadb3/technical/windows-64bit.aspx"&gt;32 and 64 Bit Windows Support&lt;/a&gt; with a single assembly deployment - no need to rebind &lt;/li&gt;
&lt;li&gt;Single and Multi user support &lt;/li&gt;
&lt;li&gt;Table-Valued Params and Temp Tables&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For a full review of &lt;a href="http://www.vistadb.net/vistadb3/compare/sql-ce.aspx"&gt;VistaDB vs SQL CE&lt;/a&gt; see our comparison page on the main website.&lt;/p&gt;
&lt;p&gt;For a full list of restrictions &lt;a href="http://www.vistadb.net/about/EULA.aspx"&gt;view the EULA&lt;/a&gt; for VistaDB.&lt;/p&gt;
&lt;h3&gt;Data Builder UI Changes&lt;/h3&gt;
&lt;p&gt;New launch screen showing a cached list of recent stories from our Blog.&amp;nbsp; We will continue to update this over time (maximum of once ever 4 hours).&amp;nbsp; You may uncheck the update box to prevent it from checking for a new landing page.&amp;nbsp;&amp;nbsp; The launch page also shows the&amp;nbsp; most recent databases for quick reload of the files.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vistadb.net/blog/image.axd?picture=Express35-DataBuilder-Main.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Express35-DataBuilder-Main" src="http://www.vistadb.net/blog/image.axd?picture=Express35-DataBuilder-Main_thumb.png" border="0" alt="Express35-DataBuilder-Main" width="638" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;New menu items in Data Builder include the following:&lt;/p&gt;
&lt;h3&gt;Online Help&lt;/h3&gt;
&lt;p&gt;Sends you to the &lt;a href="http://www.vistadb.net/vistadb3/vistadb3-help/"&gt;online version of the help file&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Online Samples&lt;/h3&gt;
&lt;p&gt;The &lt;a href="http://www.vistadb.net/vistadb3/tutorials/"&gt;samples / tutorials&lt;/a&gt; main starting area on the website (under construction).&lt;/p&gt;
&lt;h3&gt;Check for Updates&lt;/h3&gt;
&lt;p&gt;Transmits your current Build information only to the server and asks for the latest update.&amp;nbsp; If an update is available you will be prompted and the Account Manager site will be launched for you to login and download.&amp;nbsp; Trial users will not be able to download later builds unless they upgrade to a subscription.&lt;/p&gt;
&lt;h3&gt;Query Plans&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;Query Plans have been removed.&amp;nbsp; They were really nothing more than query guesses, and almost always inaccurate as to what was really happening in the engine.&amp;nbsp; Once we get real plans working they will return.&lt;/p&gt;
&lt;h3&gt;Clear the Log on execute&lt;/h3&gt;
&lt;p&gt;Check as an option.&amp;nbsp; This will prevent the log from growing long after multiple runs and make it very easy to see what was just executed only.&lt;/p&gt;
&lt;h3&gt;Help files&lt;/h3&gt;
&lt;p&gt;Help files have been updated, and a few new sample were promoted to the 3.x install as well.&amp;nbsp; We will continue to evaluate these and add more as we can over time.&amp;nbsp; A few samples were included from the forums as well.&amp;nbsp; The online help is usually more current than the local version, but sometimes you are not online.&lt;/p&gt;
&lt;h3&gt;Updates to Engine&lt;/h3&gt;
&lt;p&gt;There are also a number of updates to the VistaDB engine from the last VistaDB Express build.&amp;nbsp;&amp;nbsp; We continue to release updates and improve the quality of VistaDB, thank you to all of our users for your continued support.&lt;/p&gt;
&lt;p&gt;As always if you encounter any problems or have questions we would like to know.&amp;nbsp; Please &lt;a href="http://forums.vistadb.net"&gt;visit our forums&lt;/a&gt; and post your questions.&lt;/p&gt;
&lt;h2&gt;Upgrading from previous VistaDB Express versions&lt;/h2&gt;
&lt;p&gt;To upgrade uninstall the previous version first.&amp;nbsp; Then install the latest release, add the reference in your applications to the latest DLL and you should be off and running.&lt;/p&gt;
&lt;p&gt;If you have a problem running the binary don't forget that Windows Vista blocks binary files by default.&amp;nbsp; Watch this video for information on &lt;a href="http://screencast.com/t/YMHAr0kWjFA"&gt;how to unblock a binary&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Migrating your data to VistaDB&lt;/h2&gt;
&lt;h3&gt;SQL CE Data Migration&lt;/h3&gt;
&lt;p&gt;If you are migrating data from SQL CE note that you must have &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=DC614AEE-7E1C-4881-9C32-3A6CE53384D9&amp;amp;displaylang=en"&gt;SQL CE 3.5 SP1&lt;/a&gt; in order to use the Data Migration Wizard.&amp;nbsp; If your data is in CE 3.1 you must open it in 3.5 SP1 and .Update it to the most current format.&lt;/p&gt;
&lt;h3&gt;Access 2007 Data Migration&lt;/h3&gt;
&lt;p&gt;In order to migrate an Access 2007 database you must have the Access 2007 runtime or full product installed on your machine.&amp;nbsp; There is NO 64 bit Access runtime, you must flag your application as 32 bit in order to run Access as a runtime on 64 bit Windows.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=puLkK2OvwKg:wwnVQxgGem0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=puLkK2OvwKg:wwnVQxgGem0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=puLkK2OvwKg:wwnVQxgGem0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=puLkK2OvwKg:wwnVQxgGem0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=puLkK2OvwKg:wwnVQxgGem0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/puLkK2OvwKg" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/puLkK2OvwKg/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/06/03/VistaDB-35-Express-e28093-Embedded-SQL-Database-for-Net.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=2e227fa5-deb9-4c5d-81c5-368d8fe867c0</guid>
      <pubDate>Wed, 03 Jun 2009 15:32:00 -0300</pubDate>
      <category>VistaDB News</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=2e227fa5-deb9-4c5d-81c5-368d8fe867c0</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=2e227fa5-deb9-4c5d-81c5-368d8fe867c0</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/06/03/VistaDB-35-Express-e28093-Embedded-SQL-Database-for-Net.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=2e227fa5-deb9-4c5d-81c5-368d8fe867c0</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=2e227fa5-deb9-4c5d-81c5-368d8fe867c0</feedburner:origLink></item>
    <item>
      <title>Overview of ADO.NET</title>
      <description>&lt;p&gt;ADO.NET is a set of libraries included in the .Net framework to facilitate the communication of applications with various data storage mechanisms.&amp;nbsp; These libraries form the basis for all third parties to provide data access services to users of .Net applications.&lt;/p&gt;
&lt;p&gt;Visual Studio 2005 and 2008 did not change the data access model.&amp;nbsp; In fact ADO.NET 2 is the longest running Microsoft data access technology without a major revision.&amp;nbsp; I don&amp;rsquo;t know if this is going to change in .Net 4, but the stability of ADO.NET is a major reason for its adoption in VistaDB.&lt;/p&gt;
&lt;p&gt;In this article I going to give a high level overview of the ADO.NET object model and how VistaDB supports that model.&amp;nbsp; I will then follow up with more articles discussing specifics for this model.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;The ADO.NET Object Model&lt;/h2&gt;
&lt;p&gt;ADO.NET at its most basic level was designed to help developers work efficiently with multi tier databases, across intranet or Internet scenarios.&amp;nbsp; This is a tall order for a single framework, but I think they managed to pull it off quite well.&lt;/p&gt;
&lt;p&gt;I often view the object model as being split into two parts &amp;ndash; A connected and a disconnected side of the model.&amp;nbsp; Even though there is no distinction between the two &amp;ldquo;sides&amp;rdquo;, it helps me to visualize how the data object was intended to be used.&lt;/p&gt;
&lt;h2&gt;Disconnected ADO.NET Classes&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.vistadb.net/blog/image.axd?picture=Disconnected-ADONET-Classes.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Disconnected-ADONET-Classes" src="http://www.vistadb.net/blog/image.axd?picture=Disconnected-ADONET-Classes_thumb.png" border="0" alt="Disconnected-ADONET-Classes" width="530" height="439" align="right" /&gt;&lt;/a&gt;The objects located in the disconnected half of the model do not communicate directly with the connected objects.&amp;nbsp; This is a big deal because it means each side is isolated through interfaces to communicate.&amp;nbsp; I have found this is often the most confusing part of the ADO.NET spec because users think each side should be able to directly communicate.&lt;/p&gt;
&lt;p&gt;The ADO.NET DataSet for example does not ever communicate directly with the database.&amp;nbsp; To fetch data from the database into a DataSet you must pass the DataSet into the Fill method of a connected object (The DataAdapter).&lt;/p&gt;
&lt;h3&gt;DataSet Class&lt;/h3&gt;
&lt;p&gt;DataSets are a container class for a number of DataTable objects (stored in the Tables collection).&amp;nbsp; You can think of this as an in memory representation of multiple tables, their constraints, relationships, and the actual rows.&lt;/p&gt;
&lt;p&gt;The data stored in the DataSet is a disconnected copy of the actual database.&amp;nbsp; Any changes you make to a DataSet only exist in RAM.&amp;nbsp; You can quickly get a list of just the changes by calling the GetChanges method to return only modified DataRows.&amp;nbsp; This allows you to submit smaller change sets back to the database.&lt;/p&gt;
&lt;p&gt;The Merge method also lets to combine multiple change sets into a single DataSet.&amp;nbsp; This is very useful in multi tier scenarios where you need to receive partial updates from lots of different systems and merge them into a single database change.&lt;/p&gt;
&lt;p&gt;The DataSet is also unique in that you can read and write this disconnected data cache to disk.&amp;nbsp; A common use is to put the DataSet into an XML document for transmission to multiple systems to merge into their local database.&lt;/p&gt;
&lt;h3&gt;DataTable Class&lt;/h3&gt;
&lt;p&gt;The DataTable allows you to examine the actual rows of a DataSet through rows and columns collections.&amp;nbsp; You can store the results of a query in a DataTable by calling the Adapters Fill method.&amp;nbsp; Once the DataTable is filled the database connection is released and operates disconnected only.&amp;nbsp; You can then continue to examine the data without any further communication between the DataTable and the database.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This is important for scenarios where you want to work across a network share.&amp;nbsp; Caching the data on the local machine is vital to performance of the application.&amp;nbsp; Whenever possible you should not be using connected objects against a network shared database, the traffic is very expensive.&lt;/p&gt;
&lt;h3&gt;DataColumn Class&lt;/h3&gt;
&lt;p&gt;Each DataTable has a collection of DataColumns associated with it.&amp;nbsp; This represents a single Column in the database.&amp;nbsp; But the object doesn&amp;rsquo;t actually contain any of the data stored in the DataTable.&amp;nbsp; This is just a metadata storage class about the column, its constraints, types, etc.&amp;nbsp; It is quite useful for finding when a single column allows nulls, has a unique constraint, etc.&amp;nbsp; The autoincrement property is also implemented at the DataColumn level since you want to ensure each row has a unique value.&lt;/p&gt;
&lt;p&gt;One interesting usage for this class is the Expression property.&amp;nbsp; This allows you to define how the data for this column is calculated.&amp;nbsp; This would enable you to compute the value of an items total price based upon units sold and price per unit at the DataColumn level rather than through a SQL command.&amp;nbsp; The added benefit to using this scenario is that updates to the Price and Quantity columns will recalculate the total price column in RAM without having to return to the database to rerun the SQL.&lt;/p&gt;
&lt;h3&gt;DataRow Class&lt;/h3&gt;
&lt;p&gt;Each row in a DataTable is represented in the Rows collection as a DataRow.&amp;nbsp; To examine the data in a specific column use the Item property of the appropriate DataRow object.&amp;nbsp; You can lookup the columns in a row through an integer index, or by the name of the Column.&lt;/p&gt;
&lt;p&gt;The DataRow class is also where you perform updates to a DataSet.&amp;nbsp; When your preparing to edit a row the BeginEdit method should be called on the DataRow object.&amp;nbsp; The EndEdit method then can be used to save the changes back to the DataSet, CancelEdit provides an undo facility.&amp;nbsp; This is key to how the DataGrid and other grid controls allow users to edit, commit, and cancel their changes in memory.&lt;/p&gt;
&lt;p&gt;A key concept often missed by developers is that changes to the DataRow even when they are &amp;ldquo;AcceptChanges&amp;rdquo; calls are only committing them to the RAM copy of the database (The DataSet).&amp;nbsp; You must still commit the changes back to the database in order to store them permanently.&lt;/p&gt;
&lt;h3&gt;Constraints Class&lt;/h3&gt;
&lt;p&gt;Each DataColumn may have multiple Constraints.&amp;nbsp; Conditions such as unique are applied through this class.&amp;nbsp; Constraint objects are maintained through the DataTables Constraints collection.&lt;/p&gt;
&lt;h3&gt;DataRelation Class&lt;/h3&gt;
&lt;p&gt;Most tables in a single DataSet will be related in some way.&amp;nbsp; The DataSet can handle mapping things like Orders to OrderDetails with a little help from the DataRelation class.&amp;nbsp; This is a way to enforce referential integrity from the database, without having to make a complete round trip to the database.&lt;/p&gt;
&lt;h3&gt;DataView Class&lt;/h3&gt;
&lt;p&gt;Although excluded in the diagram above, this is an important class.&amp;nbsp; You can use multiple DataView objects to example the same DataTable in a DataSet.&amp;nbsp; This can result in massive memory savings since only one copy of the data needs to be maintained in the DataSet.&amp;nbsp; You can do a lot of view type operations with the in memory DataView object.&lt;/p&gt;
&lt;h2&gt;Connected ADO.NET Classes&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.vistadb.net/blog/image.axd?picture=Connected-ADONET-Classes.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Connected-ADONET-Classes" src="http://www.vistadb.net/blog/image.axd?picture=Connected-ADONET-Classes_thumb.png" border="0" alt="Connected-ADONET-Classes" width="453" height="545" align="right" /&gt;&lt;/a&gt;Connected classes in ADO.NET are designed to communicate directly with the data source.&amp;nbsp; Most of these classes map closely to basic data access concepts such as the Connection to the database, a Query, and QueryResults.&lt;/p&gt;
&lt;h3&gt;ProviderFactory Class&lt;/h3&gt;
&lt;p&gt;New in ADO.NET 2 this is an object factory that allows all .Net applications to generically load a provider without knowing much about it.&amp;nbsp; Each Provider Factory includes a way to create Connections, ConnectionStringBuilders, etc.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It is this ProviderFactory object that allows VistaDB to be swapped with SQL Server at runtime through your app.config or web.config files.&amp;nbsp; It is not a perfect match for communicating directly against the strongly typed classes, but it is very close.&lt;/p&gt;
&lt;h3&gt;Connection Class&lt;/h3&gt;
&lt;p&gt;A Connection is a representation of the actual phyiscal connection to the database.&amp;nbsp; This may be through a server, or locally.&amp;nbsp; You use this class to connect and disconnect from the actual database.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A connection also acts as the handle to the database for other objects like the DataAdapter and Command objects.&amp;nbsp; They do not communicate directly to the database, they must go through a Connection.&lt;/p&gt;
&lt;h3&gt;ConnectionStringBuilder Class&lt;/h3&gt;
&lt;p&gt;This is another new class in ADO.NET 2 that simplified the process of building connection strings and remembering the options for a specific provider, it is a great utility class to save you time.&amp;nbsp; Once you have built up this object you can assign the Connection class ConnectionString property to this object.&lt;/p&gt;
&lt;h3&gt;DataAdapter&lt;/h3&gt;
&lt;p&gt;The DataAdapter is a new concept, there are no matching concepts in ADO or DAO.&amp;nbsp; The DataAdapter is the bridge between your database and the disconnected&amp;nbsp; ADO.NET objects.&amp;nbsp; The Fill method provides an efficient mechanism to fetch the results of a query into DataSet or DataTable so you can work with the data offline (disconnected).&amp;nbsp; You also use the DataAdapter to submit pending changes from the disconnected objects back to the database.&lt;/p&gt;
&lt;p&gt;This is a complex class with lots of internal jobs to track.&amp;nbsp; We will cover it in more detail in another blog post.&lt;/p&gt;
&lt;h3&gt;Command Class&lt;/h3&gt;
&lt;p&gt;This class represents a question or query against a database, a call to a stored procedure, or a direct request to return the contents of a specific table.&amp;nbsp; This is probably the hardest class to port your usage between database vendors as most of the calls at this level are vendor specific syntax.&lt;/p&gt;
&lt;p&gt;Using a Command object with a database is pretty easy.&amp;nbsp; You set the Connection property to an existing opened Connection object, and then specify the command you want to execute in the CommandText.&amp;nbsp; You can supply SQL commands, or just the name of a stored procedure or table (although you have to then also change the CommandType property to what you wish to accomplish).&lt;/p&gt;
&lt;p&gt;Commands have many ways to execute them, but all of them basically call ExecuteQuery under the hood.&amp;nbsp; If you don&amp;rsquo;t care about the results, or only want the first row and column there are short cuts you can take (ExecuteNonQuery and ExecuteScalar).&lt;/p&gt;
&lt;p&gt;Note that VistaDB does not support the ExecuteXML syntax at this time.&lt;/p&gt;
&lt;h3&gt;Parameter Class&lt;/h3&gt;
&lt;p&gt;To simplify the process of putting parameters into a Command object the Parameter class allows you to quickly put parameters into a query without string concatenation or worry about SQL Injection attacks.&amp;nbsp; Most developers rely heavily on parameterized queries because of the added benefit of SQL Injection protection; strings are automatically quoted to the specs of the underlying database.&lt;/p&gt;
&lt;p&gt;There are many ways to create Parameters for Command objects, but they are mostly just different ways of doing the same thing.&amp;nbsp; Some people prefer one syntax over another, but they all end up as Parameter objects on a Command object at execution in the database.&lt;/p&gt;
&lt;h3&gt;DataReader Class&lt;/h3&gt;
&lt;p&gt;The DataReader is built as a way to retrieve and examine the rows returned in response to your query as quickly as possible.&amp;nbsp; Not all of the rows have to be ready before you can start working with the data.&amp;nbsp; Only a single row is exposed at a time, so the database engine can get you the first record quickly and then continue to work in the background to find the rest of the answers over time.&lt;/p&gt;
&lt;p&gt;The data returned by a DataReader is &lt;strong&gt;always read only&lt;/strong&gt;.&amp;nbsp; This class was built to be a lightweight forward only, read only, way to run through data quickly (this was called a firehose cursor in ADO).&lt;/p&gt;
&lt;h3&gt;Transaction Class&lt;/h3&gt;
&lt;p&gt;Transactions are used to ensure that multiple changes to database rows occur as a single unit of work.&amp;nbsp; The Connection class has a BeginTransaction method that can be used to create a Transaction.&lt;/p&gt;
&lt;p&gt;A definite best practice is to ensure that Transactions are placed in Using statements for rapid cleanup if they are not committed.&amp;nbsp; Otherwise the objects (and any internal locks that may be needed) will remain active until the GC gets around to cleaning it up.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 12px; font-weight: bold;"&gt;What about Cursors?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;You will notice that I never mentioned database cursors in the above discussion.&amp;nbsp; That is because they do not exist within the ADO.NET framework.&amp;nbsp; ADO.NET does not support server side cursors by design.&amp;nbsp; The DataSet and DataTable classes most closely resemble a cursor, and the DataReader class is a close match for a client side forward only, read only, cursor, but it is not the same thing.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=F2XkkmZnCYc:d7qySkEUXyQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=F2XkkmZnCYc:d7qySkEUXyQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=F2XkkmZnCYc:d7qySkEUXyQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=F2XkkmZnCYc:d7qySkEUXyQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=F2XkkmZnCYc:d7qySkEUXyQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/F2XkkmZnCYc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/F2XkkmZnCYc/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/06/02/Overview-of-ADONET.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=1c0eaf69-52f8-4553-a94d-af4049063185</guid>
      <pubDate>Tue, 02 Jun 2009 15:54:00 -0300</pubDate>
      <category>Articles</category>
      <category>Tutorials</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=1c0eaf69-52f8-4553-a94d-af4049063185</pingback:target>
      <slash:comments>6</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=1c0eaf69-52f8-4553-a94d-af4049063185</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/06/02/Overview-of-ADONET.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=1c0eaf69-52f8-4553-a94d-af4049063185</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=1c0eaf69-52f8-4553-a94d-af4049063185</feedburner:origLink></item>
    <item>
      <title>The right SQL goes a long way</title>
      <description>&lt;p&gt;I got a query from a customer this week that was taking a long time to run.&amp;nbsp;&amp;nbsp;&amp;nbsp; When I first looked at the query my first thought was that the indexes were wrong, or just the joins across 4 tables were killing the performance.&amp;nbsp; But almost all of the lookup tables were really simple value lookups.&lt;/p&gt;
&lt;p&gt;The submitted query took &lt;strong&gt;1 minute 55 seconds&lt;/strong&gt; on my machine with his data.&amp;nbsp; After rewriting the query, and adding a few indexes I was able to get it to run in &lt;strong&gt;0.86 seconds&lt;/strong&gt;.&amp;nbsp; That is an AMAZING performance change for a fairly simple rewrite of the query.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;Problem Query using multiple tables with no joins&lt;/h2&gt;
&lt;p&gt;I have rewritten the table and column names to make this more generic.&lt;/p&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt;  &lt;/pre&gt;
&lt;pre&gt;  VisitID &lt;span class="kwrd"&gt;as&lt;/span&gt; ID, &lt;/pre&gt;
&lt;pre class="alt"&gt;  VisitDate, &lt;/pre&gt;
&lt;pre&gt;  Minutes, &lt;/pre&gt;
&lt;pre class="alt"&gt;  RegionName, &lt;/pre&gt;
&lt;pre&gt;  Reason, &lt;/pre&gt;
&lt;pre class="alt"&gt;  Name, &lt;/pre&gt;
&lt;pre&gt;  City &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;  Visits, &lt;/pre&gt;
&lt;pre class="alt"&gt;  Clients, &lt;/pre&gt;
&lt;pre&gt;  Regions, &lt;/pre&gt;
&lt;pre class="alt"&gt;  VisitReasons &lt;/pre&gt;
&lt;pre&gt;&lt;span class="kwrd"&gt;WHERE&lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;VisitReasons.VisitReasonID = Visits.VisitReasonID  &lt;span class="kwrd"&gt;AND&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;Clients.ClientID = Visits.ClientID &lt;span class="kwrd"&gt;AND&lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;Clients.RegionID = Regions.RegionID &lt;span class="kwrd"&gt;AND&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;Visits.VisitDate &amp;gt;= &lt;span class="str"&gt;'2009/01/01'&lt;/span&gt; &lt;span class="kwrd"&gt;AND&lt;/span&gt; Visits.VisitDate &amp;lt; &lt;span class="str"&gt;'2010/01/01'&lt;/span&gt; &lt;span class="kwrd"&gt;AND&lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;Visits.Available = 1 &lt;/pre&gt;
&lt;pre&gt;&lt;span class="kwrd"&gt;ORDER&lt;/span&gt; &lt;span class="kwrd"&gt;BY&lt;/span&gt; Visits.VisitID&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="font-size: 15px; font-weight: bold;"&gt;Rewrite to use JOINs&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Notice the FROM clause is grabbing from 4 different tables.&amp;nbsp; This is a common Access style query.&amp;nbsp; But what that is in effect going to do is SELECT * from each of those tables.&amp;nbsp; The WHERE clause restricts the constraints, but by that point we have already loaded the complete schema for the table, indexes etc.&lt;/p&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;  VisitID &lt;span class="kwrd"&gt;as&lt;/span&gt; ID, &lt;/pre&gt;
&lt;pre class="alt"&gt;  VisitDate, &lt;/pre&gt;
&lt;pre&gt;  Minutes, &lt;/pre&gt;
&lt;pre class="alt"&gt;  RegionName, &lt;/pre&gt;
&lt;pre&gt;  Reason, &lt;/pre&gt;
&lt;pre class="alt"&gt;  Name, &lt;/pre&gt;
&lt;pre&gt;  City &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;  Visits &lt;/pre&gt;
&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;LEFT&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; VisitReasons &lt;span class="kwrd"&gt;on&lt;/span&gt; VisitReasons.VisitReasonID = Visits.VisitReasonID &lt;/pre&gt;
&lt;pre&gt;    &lt;span class="kwrd"&gt;LEFT&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; Clients &lt;span class="kwrd"&gt;on&lt;/span&gt; Clients.ClientID = Visits.ClientID &lt;/pre&gt;
&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;LEFT&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; Regions &lt;span class="kwrd"&gt;on&lt;/span&gt; Regions.RegionID = Clients.RegionID &lt;/pre&gt;
&lt;pre&gt;&lt;span class="kwrd"&gt;WHERE&lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;  Visits.VisitDate &amp;gt;= &lt;span class="str"&gt;'2009/01/01'&lt;/span&gt; &lt;span class="kwrd"&gt;AND&lt;/span&gt; Visits.VisitDate &amp;lt; &lt;span class="str"&gt;'2010/01/01'&lt;/span&gt; &lt;span class="kwrd"&gt;AND&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;  Visits.Available = 1 &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;ORDER&lt;/span&gt; &lt;span class="kwrd"&gt;BY&lt;/span&gt; Visits.VisitID&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Notice the joins.&amp;nbsp; Basically by only selecting FROM 1 table we are telling the engine it is the most important thing for us to load.&amp;nbsp; Everything else falls from there.&amp;nbsp; The other tables are joined, but with tight constraints so they only load the correct amount of data from a primary key.&lt;/p&gt;
&lt;h2&gt;Indexes too&lt;/h2&gt;
&lt;p&gt;The other change was to add an index on the columns in the WHERE clause.&amp;nbsp; Those two columns were not indexed, and only the date one really made a big difference, but it is still a good idea to have the indexes there.&lt;/p&gt;
&lt;h2&gt;Why?&lt;/h2&gt;
&lt;p&gt;Why is this such a big deal? &amp;nbsp;Well, SQL Server and Access both rewrite your queries for you when they notice things like this. &amp;nbsp;That query optimization is one thing that we are still working on. &amp;nbsp;It is really hard to get it right and not mess up the original intent of the query. &amp;nbsp;This is an area I feel we still have a long way to go. &amp;nbsp;But you can acheive these results through careful writing of your queries. &amp;nbsp;If you have a query that seems to perform poorly, try to do it another way.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Simplified Database&lt;/h2&gt;
&lt;p&gt;I did simplify the database and schema to make sense for the purposes of this demo, but here is the database with just a few rows in it.&amp;nbsp; The customers had about 100,000 rows total.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sample Database&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vistadb.net/blog/file.axd?file=2009%2f5%2fExampleMultiJoin.vdb3"&gt;ExampleMultiJoin.vdb3 (316.00 kb)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sample Queries&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vistadb.net/blog/file.axd?file=2009%2f5%2fBlog-SampleQueries.vsql3"&gt;Blog-SampleQueries.vsql3 (902.00 bytes)&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=-AwuPRYcMMw:10PQV082YCQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=-AwuPRYcMMw:10PQV082YCQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=-AwuPRYcMMw:10PQV082YCQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=-AwuPRYcMMw:10PQV082YCQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=-AwuPRYcMMw:10PQV082YCQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/-AwuPRYcMMw" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/-AwuPRYcMMw/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/05/22/The-right-SQL-goes-a-long-way.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=f4d83aa7-00f8-4c26-a4a6-b8292ba8063c</guid>
      <pubDate>Fri, 22 May 2009 19:30:00 -0300</pubDate>
      <category>Articles</category>
      <category>Tutorials</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=f4d83aa7-00f8-4c26-a4a6-b8292ba8063c</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=f4d83aa7-00f8-4c26-a4a6-b8292ba8063c</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/05/22/The-right-SQL-goes-a-long-way.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=f4d83aa7-00f8-4c26-a4a6-b8292ba8063c</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=f4d83aa7-00f8-4c26-a4a6-b8292ba8063c</feedburner:origLink></item>
    <item>
      <title>What do you think about the blog update?</title>
      <description>&lt;p&gt;What do you think about the new blog layout and update? &amp;nbsp;Like it, hate it?&lt;/p&gt;
&lt;p&gt;I am not 100% happy with the layout yet, but I am planning to make some layout changes to the main website and will update this at the same time to match more closely. &amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Things that make me happy&lt;/h2&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;This blog runs VistaDB 3.5 - We have a lot more control over the specific builds of the engine that are run as a part of our blog now!&lt;/li&gt;
&lt;li&gt;Better integration with the main website&lt;/li&gt;
&lt;li&gt;Search queries also show related topics (nice feature in BlogEngine)&lt;/li&gt;
&lt;li&gt;Integrated buttons for social media sites and AddThis.com&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.vistadb.net/blog/archive.aspx"&gt;Blog Archive&lt;/a&gt; includes all topics broken out historically&lt;/li&gt;
&lt;li&gt;Built in quick poll system&lt;/li&gt;
&lt;li&gt;Sidebar remembers you when you return and have made comments here before, gives you some update information&lt;/li&gt;
&lt;li&gt;Easier RSS feed per category for user control&lt;/li&gt;
&lt;li&gt;Built in Sitemap generator for Google actually increased our blog indexes in Google pretty quickly&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;/div&gt;
&lt;h2&gt;Dislikes&lt;/h2&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Integrated blog stats - I have split them out in Google Analytics now so I can track blog usage separate from main website&lt;/li&gt;
&lt;li&gt;No versioning of blog posts&amp;nbsp;&lt;/li&gt;
&lt;li&gt;APML - I still have no idea why I would want to use it, but it keeps asking me if I want to apply my APML filter...&lt;/li&gt;
&lt;li&gt;Admin panel for BlogEngine still feels clunky to me&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Editor does not seem to always like Chrome and tends to default to a raw HTML view&lt;/li&gt;
&lt;li&gt;Adding tags to a new post does not AJAX for existing tags - I have to remember them...&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;h2&gt;Two thumbs Up!&lt;/h2&gt;
&lt;p&gt;Overall I definately give the BlogEngine guys two thumbs up. &amp;nbsp;Very easy to setup and run a blog using BlogEngine. &amp;nbsp;And I also just learned they are running on Mono now.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=XAoxoMCryaU:-Mg-g-PkAjU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=XAoxoMCryaU:-Mg-g-PkAjU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=XAoxoMCryaU:-Mg-g-PkAjU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=XAoxoMCryaU:-Mg-g-PkAjU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=XAoxoMCryaU:-Mg-g-PkAjU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/XAoxoMCryaU" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/XAoxoMCryaU/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/05/20/What-do-you-think-about-the-blog-update.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=41d84145-7d0a-469f-89f1-575b5a042652</guid>
      <pubDate>Wed, 20 May 2009 01:55:00 -0300</pubDate>
      <category>VistaDB News</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=41d84145-7d0a-469f-89f1-575b5a042652</pingback:target>
      <slash:comments>7</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=41d84145-7d0a-469f-89f1-575b5a042652</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/05/20/What-do-you-think-about-the-blog-update.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=41d84145-7d0a-469f-89f1-575b5a042652</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=41d84145-7d0a-469f-89f1-575b5a042652</feedburner:origLink></item>
    <item>
      <title>BlogEngine rollout and my first extension</title>
      <description>&lt;p&gt;We have rolled out BlogEngine.net as our blogging engine now (you should be reading this through BlogEngine unless you are reading the RSS).&lt;/p&gt;
&lt;p&gt;The migration actually went really smooth. &amp;nbsp;There are a few things I miss from the old engine, but the presentation side of things is great.&lt;/p&gt;
&lt;p&gt;In the process I decided I wanted to customize the output of the blog for the single page displays to include AddThis.com, DotNetShoutOut, DotNetKicks, and DZone social network voting systems. &amp;nbsp;But I only wanted it on the single page view, on the main view I think they tend to look too cluttered. &amp;nbsp;Part of my way of doing it led me to write my first extension.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Missing?&lt;/h3&gt;
&lt;p&gt;First, there is nothing really missing. &amp;nbsp;I guess miss a few features from Graffiti. &amp;nbsp;The admin view page in Graffiti shows you the number of views your blog has had for the day, and is a new graphical boost to your blogging ego. &amp;nbsp;I have found it a great way to track over time if the blog is gaining readers or not. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Of course it turns out this is also the most terrible thing in Graffiti for performance. &amp;nbsp;Most people I talk to who say that Graffiti performs poorly with VistaDB are actually talking about this form. &amp;nbsp;The data is stored in a table named Post_Statistics and it is very poorly normalized. &amp;nbsp;My current table had 1.9 million rows in it. &amp;nbsp;Each and every time a user read from a post an entry is made here. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;This is a terrible table because there are NO indexes on the posts column, or the DateViewed column. &amp;nbsp;Adding them speeds up the query to sum the dates a lot, but it is still going to be slow after a while. &amp;nbsp;The data should have been normalized to only include hits from a specific date, and then to summarize the dates statistics into another long term table. &amp;nbsp;Periodically cleaning this table has been the best way to improve the performance of Graffiti.&lt;/p&gt;
&lt;p&gt;Another thing I miss is the ability to view multiple versions of a post. &amp;nbsp;Graffiti stored all the changes to each blog entry, and let you view all the changes over time. &amp;nbsp;Now to be honest, this was rarely used. &amp;nbsp;But it was always comforting to know that if the editor went nuts when I was editing a post (or IE posted garbage) I could recover to an older version of the post by a simple rollback type procedure similar to what I do with my source code.&lt;/p&gt;
&lt;h3&gt;Social Network Extension&lt;/h3&gt;
&lt;p&gt;I liked the customizations I had made in Graffiti to include the AddThis.com Bookmark button and other social network sharing buttons like DotNetShoutOut. &amp;nbsp;Initially I made the same changes to BlogEngine for my themes primary view. &amp;nbsp;But I didn't like the look on the main form when you have 5 posts showing to see 5 AddThis buttons as it didn't make sense to me. &amp;nbsp;I only wanted it to show when a single post was being viewed.&lt;/p&gt;
&lt;p&gt;Well, it turns out I could have done this in the theme post view code behind (there is a SinglePost flag to tell you when the engine is serving a single post), but I made an extension. &amp;nbsp;It only took about 30 minutes and I think it is sort of neat to have it.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.vistadb.net/blog/image.axd?picture=2009%2f5%2f2009-05-17_2359-Extension.png" border="2" alt="Custom Extension Screenshot" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This is a screen shot of the extension panel I made, pretty cool that you can include help as a part of the extension.&lt;/p&gt;
&lt;p&gt;Basically you can turn this on or off for your theme and it will insert the button at the bottom of your post (optionally only when you are in single post view mode). &amp;nbsp;You can specify the account for AddThis and some other options.&lt;/p&gt;
&lt;h3&gt;How to use the SubmitStoryExtension&lt;/h3&gt;
&lt;p&gt;You can use this same extension in your own BlogEngine.net blog by putting the code in your App_Code\Extensions folder and loading the admin panel. &amp;nbsp;It will show up as an option and you can select Edit to change your options.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vistadb.net/blog/file.axd?file=2009%2f5%2fSubmitStoryExtension.zip"&gt;SubmitStoryExtension.zip (2.69 kb)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I was really impresed how easy it was to build, and it was fun to play around with the object model and get my feet wet in the code.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=wwbx0rAuFZc:H5XsZ7J7uxw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=wwbx0rAuFZc:H5XsZ7J7uxw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=wwbx0rAuFZc:H5XsZ7J7uxw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=wwbx0rAuFZc:H5XsZ7J7uxw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=wwbx0rAuFZc:H5XsZ7J7uxw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/wwbx0rAuFZc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/wwbx0rAuFZc/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/05/18/BlogEngine-rollout-and-my-first-extension.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=f230ffdd-d3a2-46a1-8037-760bc6a8a847</guid>
      <pubDate>Mon, 18 May 2009 00:44:00 -0300</pubDate>
      <category>Articles</category>
      <category>VistaDB News</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=f230ffdd-d3a2-46a1-8037-760bc6a8a847</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=f230ffdd-d3a2-46a1-8037-760bc6a8a847</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/05/18/BlogEngine-rollout-and-my-first-extension.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=f230ffdd-d3a2-46a1-8037-760bc6a8a847</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=f230ffdd-d3a2-46a1-8037-760bc6a8a847</feedburner:origLink></item>
    <item>
      <title>Visual Studio 2010 Beta 1 for MSDN Subscribers</title>
      <description>&lt;p&gt;Microsoft Visual Studio 2010 will be available on MSDN May 18, 2009, and a general download&amp;nbsp;available&amp;nbsp;later for non MSDN subscribers.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;EDIT&lt;/em&gt;: It is now available - we are downloading it and the .Net Framework 4 beta 1.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/australia/visualstudio/products/2010/default.mspx" target="_blank"&gt;Microsoft Australia&lt;/a&gt; has pages up already showing the UI improvements.&lt;/p&gt;
&lt;p&gt;There is also a PDF file available with information &lt;a href="http://download.microsoft.com/download/C/D/3/CD39BB69-35CC-458A-B4EB-2F928B58FB4B/VisualStudio2010_ProductOverview.pdf" target="_blank"&gt;about Visual Studio 2010 here&lt;/a&gt;. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Some highlights from the information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.Net 4.0&lt;/li&gt;
&lt;li&gt;Cloud Development - Windows Azure which is basically utility computing where you pay by the hour for your usage.&lt;/li&gt;
&lt;li&gt;Parallel Development - Not sure if this only means PLINQ for .Net developers or if they are only talking about C++ devs. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;TDD Improvements - Editor changes for building test cases first, and then writing the code.&lt;/li&gt;
&lt;li&gt;ASP.NET - CSS grids and design surfaces changes, more Javascript debugging improvements.&lt;/li&gt;
&lt;li&gt;C++ Compiler - Lots of changes for C++ development, including MFC.&lt;/li&gt;
&lt;li&gt;Sharepoint templates&amp;nbsp;&lt;/li&gt;
&lt;li&gt;New Project Templates&lt;/li&gt;
&lt;li&gt;Windows 7 - MFC updates for Ribbon UI, and WPF changes.&lt;/li&gt;
&lt;li&gt;Application Model Changes - Reverse existing codebases, and lots of changes in Architect Edition to support more model types (including Class Libraries finally).&lt;/li&gt;
&lt;li&gt;Test Runner - This is potentially huge as it allows testers to submit bug reports complete with callstacks and traces that you can actually use to resume an app at the error point to avoid the dreaded No Repro on bug reports. &amp;nbsp;I have seen this demo and it is quite impressive. &amp;nbsp;We will see how it actually works though.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And just in case you didn't know the entire UI is now driven by WPF. &amp;nbsp;It does not look like a major overhaul, but we will see once the new beta is released.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.vistadb.net/blog/image.axd?picture=2009%2f5%2fhero_2010_v3.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;I personally am still taking a wait and see approach. &amp;nbsp;We all know we will HAVE to use it. &amp;nbsp;There is no other serious development tool for .Net developers. &amp;nbsp;The question for me is how painful is it going to be to get our designers working in it (they have already said the designer model is changed), and what does .Net 4 entail for changes.&lt;/p&gt;
&lt;p&gt;We will be downloading the beta and testing it with the engine for sure. &amp;nbsp;Expect many updates about this over the coming months. &amp;nbsp;Not because you need it today, but you will in the future.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=s7sL1CkaKzo:Q4-uWdKmYQ8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=s7sL1CkaKzo:Q4-uWdKmYQ8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=s7sL1CkaKzo:Q4-uWdKmYQ8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Vistadb?a=s7sL1CkaKzo:Q4-uWdKmYQ8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Vistadb?i=s7sL1CkaKzo:Q4-uWdKmYQ8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Vistadb/~4/s7sL1CkaKzo" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Vistadb/~3/s7sL1CkaKzo/post.aspx</link>
      <author>js_vistadb</author>
      <comments>http://www.vistadb.net/blog/post/2009/05/17/visual-studio-2010-beta-1.aspx#comment</comments>
      <guid isPermaLink="false">http://www.vistadb.net/blog/post.aspx?id=7d201db5-6fc5-40d6-9850-ec66b27cd8c3</guid>
      <pubDate>Sun, 17 May 2009 21:14:00 -0300</pubDate>
      <category>Industry News</category>
      <dc:publisher>js_vistadb</dc:publisher>
      <pingback:server>http://www.vistadb.net/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.vistadb.net/blog/post.aspx?id=7d201db5-6fc5-40d6-9850-ec66b27cd8c3</pingback:target>
      <slash:comments>5</slash:comments>
      <trackback:ping>http://www.vistadb.net/blog/trackback.axd?id=7d201db5-6fc5-40d6-9850-ec66b27cd8c3</trackback:ping>
      <wfw:comment>http://www.vistadb.net/blog/post/2009/05/17/visual-studio-2010-beta-1.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.vistadb.net/blog/syndication.axd?post=7d201db5-6fc5-40d6-9850-ec66b27cd8c3</wfw:commentRss>
    <feedburner:origLink>http://www.vistadb.net/blog/post.aspx?id=7d201db5-6fc5-40d6-9850-ec66b27cd8c3</feedburner:origLink></item>
  </channel>
</rss>
