<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.objectsharp.com/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Barry Gervin's Software Architecture Perspectives</title><link>http://www.objectsharp.com/cs/blogs/barry/default.aspx</link><description>Using .NET in the Enterprise</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>Visual Studio 2008 SP1 Beta &amp; SQL Server 2008</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2008/05/09/visual-studio-2008-sp1-beta-sql-server-2008.aspx</link><pubDate>Fri, 09 May 2008 20:30:10 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:143250</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>1</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/143250.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=143250</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=143250</wfw:comment><description>&lt;p&gt;A quick heads up to let you know that VS 2008 Service Pack 1 is now available (links below). It typically takes a couple of months from this point before we'll see a final release.&lt;/p&gt;  &lt;p&gt;This Service Pack includes new cool feature:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa697427(VS.80).aspx" target="_blank"&gt;ADO.NET Entity Framework&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://astoria.mslivelabs.com/" target="_blank"&gt;ADO.NET Data Services&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://astoria.mslivelabs.com/" target="_blank"&gt;ASP.NET 3.5 Extensions&lt;/a&gt; (aka Cicero) which includes MVC Framework, ASP.NET Silverlight Controls, Dynamic Data, New Ajax Nav/History Controls. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;One interesting point is that MS is going to simultaneously ship SQL Server 2008 which actually has a hard dependency on SP1.&lt;/p&gt;  &lt;p&gt;I thought I&amp;#8217;d take a moment to highlight some new features that Dev&amp;#8217;s would care about in &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/wp-sql-2008-overview.aspx" target="_blank"&gt;SQL Server 2008&lt;/a&gt;.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Change Data Capture: Async &amp;#8220;triggers&amp;#8221; capture the before/after snapshot of row level changes and writes them to Change Tables that you can query in your app. They aren&amp;#8217;t real triggers as this asynchronously reads the transaction log.&lt;/li&gt;    &lt;li&gt;Granular control of encryption, right through to the database level without any application changes required.&lt;/li&gt;    &lt;li&gt;Resource Governor &amp;#8211; very helpful when you allow users to write adhoc queries / reports against your OLTP database. Allows a DBA to assert resource limits &amp;amp; priorities.&lt;/li&gt;    &lt;li&gt;Plan Freezing &amp;#8211; allows you to lock down query plans to promote stable query plans across disparate hardware, server upgrades, etc.&lt;/li&gt;    &lt;li&gt;New Date, and Time data types, no longer just DateTime types that you have to manually parse out the time or date to just get the real data you want.&lt;/li&gt;    &lt;li&gt;DataTimeOffset &amp;#8211; is a time zone aware datetime.&lt;/li&gt;    &lt;li&gt;Table Value Parameters to procs &amp;#8211; ever want to pass a result set as an arg to a proc?&lt;/li&gt;    &lt;li&gt;Hierarchy ID is a new system type for storing nodes in a hierarchy&amp;#8230;.implemented as a CLR User Defined Type.&lt;/li&gt;    &lt;li&gt;FileStream Data type allows blobish data to be surfaced in the database, but physically stored on the NTFS file system. &amp;#8230;.but with complete transactional consistency with the relational data and backup integration.&lt;/li&gt;    &lt;li&gt;New Geographic data support, store spatial data such as polygons, points and lines, and long/lat data types.&lt;/li&gt;    &lt;li&gt;Merge SQL statement allows you to insert, or update if a row already exists. &lt;/li&gt;    &lt;li&gt;New reporting services features such as access to reports from within Word &amp;amp; Excel, better SharePoint integration&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Personally, haven't spent any time with SQL Server 2008 but that's a great set of new features that I can hardly wait to start using in real-world applications. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Downloads&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#183; &lt;b&gt;VS 2008 SP1&lt;/b&gt; : &lt;a href="http://download.microsoft.com/download/7/3/8/7382EA08-4DD6-4134-9B92-8585A5B07973/VS90sp1-KB945140-ENU.exe"&gt;http://download.microsoft.com/download/7/3/8/7382EA08-4DD6-4134-9B92-8585A5B07973/VS90sp1-KB945140-ENU.exe&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#183; &lt;b&gt;.NET 3.5 SP1&lt;/b&gt; : &lt;a href="http://download.microsoft.com/download/8/f/c/8fc1fe13-55de-4bf5-b43e-375daf01452e/dotNetFx35setup.exe"&gt;http://download.microsoft.com/download/8/f/c/8fc1fe13-55de-4bf5-b43e-375daf01452e/dotNetFx35setup.exe&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#183; &lt;b&gt;Express 2008 with SP1:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;o &lt;a href="http://download.microsoft.com/download/F/E/7/FE754BA4-140B-413C-933F-8D35FB150F12/vbsetup.exe"&gt;http://download.microsoft.com/download/F/E/7/FE754BA4-140B-413C-933F-8D35FB150F12/vbsetup.exe&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;o &lt;a href="http://download.microsoft.com/download/F/E/7/FE754BA4-140B-413C-933F-8D35FB150F12/vcsetup.exe"&gt;http://download.microsoft.com/download/F/E/7/FE754BA4-140B-413C-933F-8D35FB150F12/vcsetup.exe&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;o &lt;a href="http://download.microsoft.com/download/F/E/7/FE754BA4-140B-413C-933F-8D35FB150F12/vcssetup.exe"&gt;http://download.microsoft.com/download/F/E/7/FE754BA4-140B-413C-933F-8D35FB150F12/vcssetup.exe&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;o &lt;a href="http://download.microsoft.com/download/F/E/7/FE754BA4-140B-413C-933F-8D35FB150F12/vnssetup.exe"&gt;http://download.microsoft.com/download/F/E/7/FE754BA4-140B-413C-933F-8D35FB150F12/vnssetup.exe&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#183; &lt;b&gt;TFS 2008 SP1: &lt;/b&gt;&lt;a href="http://download.microsoft.com/download/a/e/2/ae2eb0ff-e687-4221-9c3e-9165a942bc1c/TFS90sp1-KB949786.exe"&gt;http://download.microsoft.com/download/a/e/2/ae2eb0ff-e687-4221-9c3e-9165a942bc1c/TFS90sp1-KB949786.exe&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Feedback Forum: &lt;a href="http://go.microsoft.com/fwlink/?LinkId=119125"&gt;http://go.microsoft.com/fwlink/?LinkId=119125&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=143250" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/SQL/default.aspx">SQL</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Home/default.aspx">Home</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Newsletter/default.aspx">Newsletter</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category></item><item><title>The Entity Framework vs. The Data Access Layer (Part 1: The EF as a DAL)</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2008/05/06/the-entity-framework-vs-the-data-access-layer-part-1-the-ef-as-a-dal.aspx</link><pubDate>Wed, 07 May 2008 04:06:37 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:143110</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>2</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/143110.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=143110</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=143110</wfw:comment><description>&lt;p&gt;In &lt;a href="http://www.objectsharp.com/cs/blogs/barry/archive/2008/04/27/the-entity-framework-vs-the-data-access-layer-part-0-introduction.aspx" target="_blank"&gt;Part 0: Introduction&lt;/a&gt; of this series after asking the question &amp;quot;Does the Entity Framework replace the need for a Data Access Layer?&amp;quot;, I waxed lengthy about the qualities of a good data access layer. Since that time I've received a quite a few emails with people interested in this topic. So without further adieu, let's get down to the question at hand.&lt;/p&gt;  &lt;p&gt;So let's say you go ahead and create an Entity Definition model (*.edmx) in Visual Studio and have the designer generate for you a derived ObjectContext class and an entity class for each of your tables, derived from EntityObject. This one to one table mapping to entity class is quite similar to LINQ to SQL but the mapping capabilities move well beyond this to support &lt;a href="http://msdn.microsoft.com/en-us/library/bb738640.aspx" target="_blank"&gt;advanced data models&lt;/a&gt;. This is at the heart of why the EF exists: &lt;a href="http://msdn.microsoft.com/en-us/library/bb738613.aspx" target="_blank"&gt;Complex Types&lt;/a&gt;, Inheritance (&lt;a href="http://msdn.microsoft.com/en-us/library/bb738685.aspx" target="_blank"&gt;Table per Type&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/bb738443.aspx" target="_blank"&gt;Table per Inheritance Hierarchy&lt;/a&gt;), &lt;a href="http://msdn.microsoft.com/en-us/library/bb738537.aspx" target="_blank"&gt;Multiple Entity Sets per Type&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/bb896233.aspx" target="_blank"&gt;Single Entity Mapped to Two Tables&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/bb896279.aspx" target="_blank"&gt;Entity Sets mapped to Stored Procedures&lt;/a&gt; or mapping to a hand-crafted query, expressed as either &lt;a href="http://msdn.microsoft.com/en-us/library/bb738450.aspx" target="_blank"&gt;SQL&lt;/a&gt; or &lt;a href="http://blogs.msdn.com/dsimmons/archive/2007/11/08/mapping-read-only-entities.aspx" target="_blank"&gt;Entity SQL&lt;/a&gt;. EF has a good story for a conceptual model over top of our physical databases using Xml Magic in the form of the edmx file - and that's why it exists. &lt;/p&gt;  &lt;p&gt;So to use the Entity Framework as your data access layer, define your model and then let the EdmGen.exe tool do it's thing to the edmx file at compile time and we get the csdl, ssdl, and msl files - plus the all important code generated entity classes. So using this pattern of usage for the Entity Framework, our data access layer is complete. It may not be the best option for you, so let's explore the qualities of this solution.&lt;/p&gt;  &lt;p&gt;To be clear, the assumption here is that our data access layer in this situation is the full EF Stack: ADO.NET Entity Client, ADO.NET Object Services, LINQ to Entities, including our model (edmx, csdl, ssdl, msl) and the code generated entities and object context. Somewhere under the covers there is also the ADO.NET Provider (SqlClient, OracleClient, etc.)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="417" alt="image" src="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/image_thumb_1.png" width="627" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To use the EF as our DAL, we would simply execute code similar to this in our business layer.&lt;/p&gt;  &lt;p&gt;&lt;span style="color:blue;"&gt;var &lt;/span&gt;db = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;AdventureWorksEntities&lt;/span&gt;();     &lt;br /&gt;&lt;span style="color:blue;"&gt;var &lt;/span&gt;activeCategories = &lt;span style="color:blue;"&gt;from &lt;/span&gt;category &lt;span style="color:blue;"&gt;in &lt;/span&gt;db.ProductCategory     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;where &lt;/span&gt;category.Inactive != true&lt;span style="color:blue;"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; orderby &lt;/span&gt;category.Name     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;select &lt;/span&gt;category;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How Do &amp;quot;EF&amp;quot; Entities Fit In?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you're following along, you're probably asking exactly where is this query code above being placed. For the purposes of our discussion, &amp;quot;business layer&amp;quot; could mean a business object or some sort of controller. The point to be made here is that we need to think of Entities as something entirely different from our Business Objects. &lt;/p&gt;  &lt;p&gt;Entity != Business Object&lt;/p&gt;  &lt;p&gt;In this model, it is up to the business object to ask the Data Access Layer to project entities, not business objects, but entities. &lt;/p&gt;  &lt;p&gt;This is one design pattern for data access, but it is not the only one. A conventional business object that contains its own data, and does not separate that out into an entity can suffer from tight bi-directional coupling between the business and data access layer. Consider a Customer business object with a Load method. Customer.Load() would in turn instantiate a data access component, CustomerDac and call the CustomerDac's Load or Fill method. To encapsulate all the data access code to populate a customer business object, the CustomerDac.Load method would require knowledge of the structure the Customer business object and hence a circular dependency would ensue. &lt;/p&gt;  &lt;p&gt;The workaround, if you can call it that, is to put the business layer and the data access layer in the same assembly - but there goes decoupling, unit testing and separation of concerns out the window. &lt;/p&gt;  &lt;p&gt;Another approach is to invert the dependency. The business layer would contain data access interfaces only, and the data access layer would implement those interfaces, and hence have a reverse dependency on the business layer. Concrete data access objects are instantiated via a factory, often combined with configuration information used by an Inversion &lt;a href="http://www.martinfowler.com/articles/injection.html" target="_blank"&gt;of Control container&lt;/a&gt;. Unfortunately, this is not all that easy to do with the EF generated ObjectContext &amp;amp; Entities.&lt;/p&gt;  &lt;p&gt;Or, you do as the Entity Framework implies and separate entities from your business objects. If you've used typed DataSets in the past, this will seem familiar you to you. Substitute ObjectContext for SqlConnection and SqlDataAdapter, and the pattern is pretty much the same. &lt;/p&gt;  &lt;p&gt;Your UI presentation layer is likely going to bind to your Entity classes as well. This is an important consideration. The generated Entity classes are partial classes and can be extended with your own code. The generated properties (columns) on an entity also have event handlers created for changing and changed events so you can also wire those up to perform some column level validation. Notwithstanding, you may want to limit your entity customizations to simple validation and keep the serious business logic in your business objects. One of these days, I'll do another blog series on handing data validation within the Entity Framework.&lt;/p&gt;  &lt;h2&gt;How does this solution stack up?&lt;/h2&gt;  &lt;p&gt;&lt;strong&gt;How are database connections managed?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20up_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="19" alt="thumbs up" src="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20up_thumb.jpg" width="25" border="0" /&gt;&lt;/a&gt; Using the Entity Framework natively itself, the ObjectContext takes care of opening &amp;amp; closing connections for you - as needed when queries are executed, and during a call to SaveChanges. You can get access to the native ADO.NET connection if need be to share a connection with other non-EF data access logic. The nice thing however is that, for the most part, connection strings and connection management are abstracted away from the developer. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20down_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="19" alt="thumbs down" src="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20down_thumb.jpg" width="25" border="0" /&gt;&lt;/a&gt; A word of caution however. Because the ObjectContext will create a native connection, you should not wait to let the garbage collector free that connection up, but rather ensure that you dispose of the ObjectContext either explicitly or with a using statement.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Are all SQL Queries centralized in the Data Access Layer?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20down_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="19" alt="thumbs down" src="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20down_thumb.jpg" width="25" border="0" /&gt;&lt;/a&gt; By default the Entity Framework dynamically generates store specific SQL on the fly and therefore, the queries are not statically located in any one central location. Even to understand the possible queries, you'd have to walk through all of your business code that hits the entity framework to understand all of the potential queries. &lt;/p&gt;  &lt;p&gt;But why would you care? If you have to ask that question, then you don't care. But if you're a DBA, charged with the job of optimizing queries, making sure that your tables have the appropriate indices, then you want to go to one central place to see all these queries and tune them if necessary. If you care strongly enough about this, and you have the potential of other applications (perhaps written in other platforms), then you likely have already locked down the database so the only access is via Stored Procedures and hence the problem is already solved.&lt;/p&gt;  &lt;p&gt;Let's remind ourselves that sprocs are not innately faster than dynamic SQL, however they are easier to tune and you also have the freedom of using T-SQL and temp tables to do some pre-processing of data prior to projecting results - which sometimes can be the fastest way to generate some complex results. More importantly, you can revoke all permissions to the underlying tables and only grant access to the data via Stored Procedures. Locking down a database with stored procedures is almost a necessity if your &lt;a href="http://www.objectsharp.com/cs/blogs/barry/archive/2005/05/27/when-is-a-database-oriented-as-a-service.aspx" target="_blank"&gt;database is oriented as a service&lt;/a&gt;, acting as an integration layer between multiple client applications. If you have multiple applications hitting the same database, and you don't use stored procedures - you likely have bigger problems.&amp;#160; &lt;/p&gt;  &lt;p&gt;In the end, this is not an insurmountable problem. If you are already using Stored Procedures, then by all means you can map those in your EDM. This seems like the best approach, but you could also embed SQL Server (or other provider) queries in your SSDL using a &lt;a href="http://msdn.microsoft.com/en-us/library/bb738450.aspx" target="_blank"&gt;DefiningQuery&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Do changes in one part of the system affect others?&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;It's difficult to answer this question without talking about the possible changes.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20up_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="19" alt="thumbs up" src="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20up_thumb.jpg" width="25" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;strong&gt;Schema Changes:&lt;/strong&gt; The conceptual model and the mapping flexibility, even under complex scenarios is a strength of the entity framework. Compared to other technologies on the market, with the EF, your chances are as good as they're going to get that a change in the database schema will have minimal impact on your entity model, and vice versa. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20up_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="19" alt="thumbs up" src="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20up_thumb.jpg" width="25" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;strong&gt;Database Provider Changes:&lt;/strong&gt; The Entity Framework is database agnostic. It's provider model allows for easily changing from SQL Server, to Oracle, to My Sql, etc. via connection strings. This is very helpful for ISVs whose product must support running on multiple back-end databases. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20down_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="19" alt="thumbs down" src="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20down_thumb.jpg" width="25" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;strong&gt;Persistence Ignorance&lt;/strong&gt;: What if the change you want in one part of the system is to change your ORM technology? Maybe you don't want to persist to a database, but instead call a CRUD web service. In this pure model, you won't be happy. Both your Entities and your DataContext object inherit from base classes in the Entity Framework's System.Data.Objects namespace. By making references to these, littered throughout your business layer, decoupling yourself from the Entity Framework will not be an easy task.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20down_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="19" alt="thumbs down" src="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20down_thumb.jpg" width="25" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;strong&gt;Unit Testing&lt;/strong&gt;: This is only loosely related to the question, but you can't talk about PI without talking about Unit Testing. Because the generated entities do not support the use of Plain Old CLR Objects (POCO), this data access model is not easily mocked for unit testing. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Does the DAL simplify data access?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20up_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="19" alt="thumbs up" src="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20up_thumb.jpg" width="25" border="0" /&gt;&lt;/a&gt; Dramatically. Compared to classic ADO.NET, LINQ queries can be used for typed results &amp;amp; parameters, complete with intelli-sense against your conceptual model, with no worries about SQL injection attacks. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20up_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="19" alt="thumbs up" src="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20up_thumb.jpg" width="25" border="0" /&gt;&lt;/a&gt; As a bonus, what you do get is query composition across your domain model. Usually version 1.0 of a convention non-ORM data access layer provides components for each entity, each supporting crud behaviour. Consider a scenario where you need to show all of the Customers within a territory, and then you need to show the last 10 orders for each Customer. Now I'm not saying you'd do this, but what I've commonly seen is that while somebody might write a CustomerDac.GetCustomersByTerritory() method, and they might write an OrderDac.GetLastTenOrders(), they would almost never write a OrderDac.GetLastTenOrdersForCustomersInTerritory() method. Instead they would simply iterate over the collection of customers found by territory and call the GetLastTenOrders() over and over again. Obviously this is &amp;quot;good&amp;quot; resuse of the data access logic, however it does not perform very well. &lt;/p&gt;  &lt;p&gt;Fortunately, through query composition and eager loading, we can cause the Entity Framework (or even LINQ to SQL) to use a nested subquery to bring back the last 10 orders for each customer in a given territory in a single round trip, single query. Wow! In a conventional data access layer you could, and should write a new method to do the same, but by writing yet another query on the order table, you'd be repeating the mapping between the table and your objects each time. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Layers, Schmayers: What about tiers?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20down_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="19" alt="thumbs down" src="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20down_thumb.jpg" width="25" border="0" /&gt;&lt;/a&gt; EDM generated entity classes are not very tier-friendly. The state of an entity, whether it is modified, new, or to be delete, and what columns have changed is managed by the ObjectContext. Once you take an entity and serialize it out of process to another tier, it is no longer tracked for updates. While you can re-attach an entity that was serialized back into the data access tier, because the entity itself does not serialize it's changed state (aka diff gram), you can not easily achieve full round trip updating in a distributed system. There are techniques for dealing with this, but it is going to add some plumbing code between the business logic and the EF...and make you wish you had a real data access layer, or something like Danny Simmons' &lt;a href="http://code.msdn.microsoft.com/entitybag/" target="_blank"&gt;EntityBag&lt;/a&gt; (or a DataSet).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Does the Data Access Layer support optimistic concurrency?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20up_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="19" alt="thumbs up" src="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20up_thumb.jpg" width="25" border="0" /&gt;&lt;/a&gt; Out of the box, yes, handily. Thanks to the ObjectContext tracking state, and the change tracking events injected into our code generated entity properties. However, keep in mind the caveat with distributed systems that you'll have more work to do if your UI is separated from your data access layer by one or more tiers.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How does the Data Access Layer support transactions?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20up_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="19" alt="thumbs up" src="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TheEn.TheDataAccessLayerPart1TheEFasaDAL_FD65/thumbs%20up_thumb.jpg" width="25" border="0" /&gt;&lt;/a&gt; Because the Entity Framework builds on top of ADO.NET providers, transaction management doesn't change very much. A single call to ObjectContext.SaveChanges() will open a connection, perform all inserts, updates, and deletes across all entities that have changed, across all relationships and all in the correct order....and as you can imagine in a single transaction. To make transactions more granular than that, call SaveChanges more frequently or have multiple ObjectContext instances for each unit of work in progress. To broaden the scope of a transaction, you can manually enlist using a native ADO.NET provider transaction or by using System.Transactions.&lt;/p&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=143110" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/SQL/default.aspx">SQL</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Services/default.aspx">Services</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Home/default.aspx">Home</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Newsletter/default.aspx">Newsletter</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Entity+Framework/default.aspx">Entity Framework</category></item><item><title>Live Search Maps - now with Bird's Eye View in Toronto</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2008/05/06/live-search-maps-now-with-bird-s-eye-view-in-toronto.aspx</link><pubDate>Tue, 06 May 2008 18:36:19 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:143099</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/143099.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=143099</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=143099</wfw:comment><description>&lt;p&gt;&lt;a href="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/LiveSearchMapsnowwithBirdsEyeViewinToron_CD1F/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="384" alt="image" src="http://www.objectsharp.com/cs/blogs/barry/WindowsLiveWriter/LiveSearchMapsnowwithBirdsEyeViewinToron_CD1F/image_thumb.png" width="477" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;It's amazing what MS will give you, if you &lt;a href="http://www.objectsharp.com/devlounge/videos/playvideo.aspx?movie=ef789e34-f309-48ab-961e-9397ced8f59e" target="_blank"&gt;give them a Team Canada Hockey Jersey&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=143099" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Humours+Distractions/default.aspx">Humours Distractions</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Southern+Ontario/default.aspx">Southern Ontario</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Home/default.aspx">Home</category></item><item><title>Entity Framework Links for April, 2008</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2008/05/02/entity-framework-links-for-april-2008.aspx</link><pubDate>Fri, 02 May 2008 17:10:02 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:142776</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/142776.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=142776</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=142776</wfw:comment><description>&lt;ul&gt;   &lt;li&gt;During the past month, Danny Simmons let us all officially know that &lt;a href="http://blogs.msdn.com/dsimmons/archive/2008/04/09/ef-will-ship-with-sp1-of-vs-2008-net-framework-3-5.aspx" target="_blank"&gt;SP1 of VS 2008/.NET Framework 3.5 will be the delivery mechanism for the Entity Framework&lt;/a&gt; and the Designer, and that we should see a beta of the entire SP1 very soon as well. No release dates yet. &lt;/li&gt;    &lt;li&gt;Speaking of the next beta, there have been some improvements in the designer to support iterative development. &lt;a href="http://blogs.msdn.com/adonet/archive/2008/04/01/update-model-from-db.aspx" target="_blank"&gt;Noam Ben-Ami talks about that here.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;There is also a new ASP.NET EntityDataSource control coming in the next beta. Danny demo'd that at DevConnections, and &lt;a href="http://blogs.msdn.com/dsimmons/" target="_blank"&gt;Julie blogged about it here&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;In April, Microsoft released the .&lt;a href="http://go.microsoft.com/?linkid=8741672" target="_blank"&gt;NET 3.5 Enhancements Training Kit&lt;/a&gt;. This includes some preliminary labs on ASP.NET MVC, ASP.NET Dynamic Data, ASP.NET AJAX History, ASP.NET Silverlight controls, ADO.NET Data Services and last but certainly not least, the ADO.NET Entity Framework. Stay tuned for updates &lt;/li&gt;    &lt;li&gt;Julie Lerman has created a spiffy &lt;a href="http://www.thedatafarm.com/blog/2008/04/29/AExtensionMethodForVisualizingEntityStateObjects.aspx" target="_blank"&gt;pseudo-debug visualizer for Entity State&lt;/a&gt;. It's implemented as an extension method and not a true debug visualizer, but useful just the same. &lt;/li&gt;    &lt;li&gt;Check out Ruurd Boeke's excellent post on &lt;a href="http://www.sitechno.com/Blog/DisconnectedNTierObjectsUsingEntityFramework.aspx" target="_blank"&gt;Disconnected N-Tier objects using the Entity Framework&lt;/a&gt;. His sample solution is checked in to the &lt;a href="http://www.codeplex.com/efcontrib" target="_blank"&gt;EFContrib Project&lt;/a&gt; and he demonstrates using POCO classes, in his words &amp;quot;as persistence ignorant as I can get&amp;quot;, serializing entities with no EF references on the clients, yet not losing full change tracking on the client - and using the same domain classes on the client and the server (one could argue this last point as being not being a desirable goal - but it does have it's place). &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=142776" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/SQL/default.aspx">SQL</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Home/default.aspx">Home</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Newsletter/default.aspx">Newsletter</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Entity+Framework/default.aspx">Entity Framework</category></item><item><title>The Entity Framework vs. The Data Access Layer (Part 0: Introduction)</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2008/04/27/the-entity-framework-vs-the-data-access-layer-part-0-introduction.aspx</link><pubDate>Mon, 28 Apr 2008 03:20:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:142491</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>3</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/142491.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=142491</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=142491</wfw:comment><description>&lt;P&gt;So the million dollar question is: Does the Entity Framework replace the need for a Data Access Layer? If not, what should my Data Access Layer look like if I want to take advantage of the Entity Framework? In this multi-part series, I hope to explore my thoughts on this question. I don't think there is a single correct answer. Architecture is about trade offs and the choices you make will be based on your needs and context.&lt;/P&gt;
&lt;P&gt;In this first post, I first provide some background on the notion of a Data Access Layer as a frame of reference, and specifically, identify the key goals and objectives of a Data Access Layer.&lt;/P&gt;
&lt;P&gt;While Martin Fowler didn't invent the pattern of layering in enterprise applications, his &lt;A href="http://www.amazon.ca/Patterns-Enterprise-Application-Architecture-Martin/dp/0321127420/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1209349729&amp;amp;sr=8-1" target=_blank&gt;Patterns of Enterprise Application Architecture&lt;/A&gt; is a must read on the topic. Our goals for a layered design (which may often need to be traded off against each other) should include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Changes to one part or layer of the system should have minimal impact on other layers of the system. This reduces the maintenance involved in unit testing, debugging, and fixing bugs and in general makes the architecture more flexible. &lt;/LI&gt;
&lt;LI&gt;Separation of concerns between user interface, business logic, and persistence (typically in a database) also increases flexibility, maintainability and reusability.&lt;/LI&gt;
&lt;LI&gt;Individual components should be cohesive and unrelated components should be loosely coupled. This should allow layers to be developed and maintained independently of each other using well-defined interfaces.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Now to be clear, I'm talking about a layer, not a tier. A tier is a node in a distributed system, of which may include one or more layers. But when I refer to a layer, I'm referring only to the logical separation of code that serves a single concern such as data access. It may or may not be deployed into a separate tier from the other layers of a system. We could then begin to fly off on tangential discussions of distributed systems and service oriented architecture, but I will do my best to keep this discussion focused on the notion of a layer. There are several layered application architectures, but almost all of them in some way include the notion of a Data Access Layer (DAL). The design of the DAL will be influenced should the application architecture include the distribution of the DAL into a separate tier. &lt;/P&gt;
&lt;P&gt;In addition to the goals of any layer mentioned above, there are some design elements specific to a Data Access Layer common to the many layered architectures:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A DAL in our software provides simplified access to data that is stored in some persisted fashion, typically a relational database. The DAL is utilized by other components of our software so those other areas of our software do not have to be overly concerned with the complexities of that data store. &lt;/LI&gt;
&lt;LI&gt;In object or component oriented systems, the DAL typically will populate objects, converting rows and their columns/fields into objects and their properties/attributes. this allows the rest of the software to work with data in an abstraction that is most suitable to it. &lt;/LI&gt;
&lt;LI&gt;A common purpose of the DAL is to provide a translation between the structure or schema of the store and the desired abstraction in our software. As is often the case, the schema of a relational database is optimized for performance and data integrity (i.e. 3rd normal form) but this structure does not always lend itself well to the conceptual view of the real world or the way a developer may want to work with the data in an application. A DAL should serve as a central place for mapping between these domains such as to increase the maintainability of the software and provide an isolation between changes&amp;nbsp; in the storage schema and/or the domain of the application software. This may include the marshalling or coercing of differing data types between the store and the application software.&lt;/LI&gt;
&lt;LI&gt;Another frequent purpose of the DAL is to provide independence between the application logic and the storage system itself such that if required, the storage engine itself could be switched with an alternative with minimal impact to the application layer. This is a common scenario for commercial software products that must work with different vendors' database engines (i.e. MS SQL Server, IBM DB/2, Oracle, etc.). With this requirement, sometimes alternate DAL's are created for each store that can be swapped out easily.&amp;nbsp; This is commonly referred to as Persistence Ignorance.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Getting a little more concrete, there are a host of other issues that also need to be considered in the implementation of a DAL:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;How will database connections be handled? How will there lifetime be managed? A DAL will have to consider the security model. Will individual users connect to the database using their own credentials? This maybe fine in a client-server architecture where the number of users is small. It may even be desirable in those situations where there is business logic and security enforced in the database itself through the use of stored procedures, triggers, etc. It may however run incongruent to the scalability requirements of a public facing web application with thousands of users. In these cases, a connection pool may be the desired approach.&lt;/LI&gt;
&lt;LI&gt;How will database transactions be handled? Will there be explicit database transactions managed by the data access layer or will automatic or implied transaction management systems such as COM+ Automatic Transactions, the Distributed Transaction Coordinator be used?&lt;/LI&gt;
&lt;LI&gt;How will concurrent access to data be managed? Most modern application architecture's will rely on an optimistic concurrency&amp;nbsp; to improve scalability. Will it be the DAL's job to manage the original state of a row in this case? Can we take advantage of SQL Server's row version timestamp column or do we need to track every single column?&lt;/LI&gt;
&lt;LI&gt;Will we be using dynamic SQL or stored procedures to communicate with our database? &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;As you can see, there is much to consider just in generic terms, well before we start looking at specific business scenarios and the wacky database schemas that are in the wild. All of these things can and should influence the design of your data access layer and the technology you use to implement it. In terms of .NET, the Entity Framework is just one data access technology. MS has been so kind to bless us with many others such as Linq To SQL, DataReaders, DataAdapters &amp;amp; DataSets, and SQL XML. In addition, there are over &lt;A href="http://www.howtoselectguides.com/dotnet/ormapping/#section-vendors" target=_blank&gt;30 3rd party Object Relational Mapping tools available to choose from&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;Ok, so if you're&amp;nbsp; not familiar with the design goals of the Entity Framework (EF) you can &lt;A href="http://msdn2.microsoft.com/en-us/library/aa697427(vs.80).aspx" target=_blank&gt;read all about it here&lt;/A&gt; or watch a &lt;A href="http://channel9.msdn.com/ShowPost.aspx?PostID=217633" target=_blank&gt;video interview on channel 9&lt;/A&gt;, with &lt;A href="http://blogs.msdn.com/pablo/" target=_blank&gt;Pablo Castro&lt;/A&gt;, Britt Johnson, and Michael Pizzo. A year after that interview, they did a &lt;A href="http://channel9.msdn.com/showpost.aspx?postid=338257" target=_blank&gt;follow up interview here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;In the next post, I'll explore the idea of the Entity Framework replacing my data access layer and evaluate how this choice rates against the various objectives above. I'll then continue to explore alternative implementations for a DAL using the Entity Framework.&lt;/P&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=142491" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/SQL/default.aspx">SQL</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Services/default.aspx">Services</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/TechEd/default.aspx">TechEd</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Home/default.aspx">Home</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Newsletter/default.aspx">Newsletter</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Entity+Framework/default.aspx">Entity Framework</category></item><item><title>Countdown to DevTeach</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2008/04/25/countdown-to-devteach.aspx</link><pubDate>Sat, 26 Apr 2008 01:25:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:142353</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/142353.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=142353</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=142353</wfw:comment><description>&lt;P&gt;May 12th is just around the corner and I'm getting excited about DevTeach coming to Toronto for the first time. &lt;A href="http://guy.dotnet-expertise.com/PermaLink,guid,d94fb145-722c-4b78-948b-a6fe0a08209b.aspx" target=_blank&gt;Guy says it all.&lt;/A&gt; DevTeach is unusual in that while the sessions are great, hanging around with the Speakers is what it's all about. I'm really looking forward to it. It's not too late to &lt;A href="http://www.devteach.com/Register.aspx" target=_blank&gt;register&lt;/A&gt;. The 3 days of the main conference cost only $1200. Pre &amp;amp; Post cons are only $375/day. Some great sessions on Agile Development, .NET 2.0 through 3.5, .NET Futures, SharePoint, SQL, Architecture, BizTalk, and RockBand! &lt;/P&gt;
&lt;P&gt;Hope to see you there.&lt;/P&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=142353" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Southern+Ontario/default.aspx">Southern Ontario</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Events/default.aspx">Events</category></item><item><title>MS MVP Summit 2008: Who did you give your Team Canada Jersey To?</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2008/04/18/ms-mvp-summit-2008-who-did-you-give-your-team-canada-jersey-to.aspx</link><pubDate>Sat, 19 Apr 2008 03:45:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:141365</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>1</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/141365.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=141365</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=141365</wfw:comment><description>&lt;P&gt;The 2008 Microsoft MVP Summit concluded yesterday with a closing keynote from Steve Ballmer, which was great as usual. This was the second year that the Canadian MVP's wore their Team Canada Jersey's. I was a bit surprised that more countries didn't follow our lead on this one - although the Aussies did have touques, they were pretty subtle and they all didn't wear them or they didn't sit together at the keynotes. I saw some Russians with jackets, but again - sitting together is the key here.&lt;/P&gt;
&lt;P&gt;One of the things I've always enjoyed watching at the Olympic games was the international bonding between athletes. During the opening ceremonies - countries file into the stadium very proudly in their matching uniforms and by the closing ceremonies - everybody is mingle and has swapped clothing. Maybe that has more to do with something else - but it's very heart warming nonetheless.&lt;/P&gt;
&lt;P&gt;Likewise, the MVP Summit is a great place to make new friendships and renew old ones. So I decided on the final day to give my Jersey away....to Steve Ballmer.&lt;/P&gt;
&lt;DIV class=wlWriterSmartContent id=scid:{7D7E1B1B-BB15-44b5-AC22-DF49F6B00FD3}:36b1eb49-c1f8-4102-b377-79eaa27ecb9d style="PADDING-RIGHT:0px;DISPLAY:inline;PADDING-LEFT:0px;PADDING-BOTTOM:0px;MARGIN:0px;PADDING-TOP:0px;"&gt;&lt;/DIV&gt;
&lt;P&gt;Thanks Steve for humouring us Canadians by wearing it. You'd make a totally wicked hockey player! There was a find the secret hockey puck thing going on all week at the Summit and 10 lucky non-Canadian MVPs ended up finding all the pucks and scoring themselves a Jersey. But after this keynote, I saw a lot of people coming up to us Canadians followed by spontaneous Jersey giving. I saw a French guy wearing one (he took this video but I forgot his name - sorry), and then also saw Ken Cox and Rob Windsor giving their jersey's away to somebody from China (I think) and Italy.&lt;/P&gt;
&lt;P&gt;Steve Ballmer's call to action in this video is that each Country bring their national pride next Summit which has already been announced as March 1, 2009. Bring it on World! Bring it on!&lt;/P&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=141365" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Humours+Distractions/default.aspx">Humours Distractions</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Southern+Ontario/default.aspx">Southern Ontario</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Events/default.aspx">Events</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Home/default.aspx">Home</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Newsletter/default.aspx">Newsletter</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Canadians+_4000_+MVP+Summit+2008/default.aspx">Canadians @ MVP Summit 2008</category></item><item><title>Where is Barry Gervin?</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2008/03/14/where-is-barry-gervin.aspx</link><pubDate>Fri, 14 Mar 2008 21:22:32 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:136231</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/136231.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=136231</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=136231</wfw:comment><description>&lt;p&gt;&lt;img height="227" src="http://www.emergentchaos.com/images/07-may/waldo.jpg" width="129" align="right" /&gt;I'm a pretty mobile guy and if you work with me, it can be hard to know where I am on any given day. I could be in our ObjectSharp office, working at home, at a client, working or meeting with peers at a variety of meeting places, coffee shops, etc. around town. Or I could be be traveling, perhaps visiting MS in Redmond or at a conference some where. Maybe you're my wife and want to know why I'm not there for dinner yet :)&lt;/p&gt;  &lt;p&gt;Well this is the page for you. Right now I'm experimenting with Loki. It uses an IE plug-in combined with some wifi triangulation that will allow me to quickly update my location with the click of a button, provided I'm online (that's more common that you'd think). &lt;/p&gt;  &lt;p&gt;So here is some Loki information about my current whereabouts:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a title="Where is Barry Gervin" href="http://my.loki.com/user/YmdlcnZpbg" target="_blank"&gt;&lt;img src="http://my.loki.com/location/getImageBadge/YmdlcnZpbg.gif" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Where is Barry Gervin" href="http://my.loki.com/user/YmdlcnZpbg" target="_blank"&gt;&lt;img src="http://my.loki.com/location/getMapBadge/YmdlcnZpbg_big.gif" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Click on those will take you to some more detailed information. And if you'd like to stalk me without refreshing this page, feel free to subscribe to this &lt;a title="Where is Barry Gervin" href="http://my.loki.com/location/RSSFeed/YmdlcnZpbg" target="_blank"&gt;RSS feed&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you need to contact me, &lt;a href="http://www.objectsharp.com/bgervin.aspx" target="_blank"&gt;all my contact details are here&lt;/a&gt;. I'm also on plaxo, linked in, and facebook should you prefer to find me there.&lt;/p&gt;  &lt;p&gt;Now this information is more or less &amp;quot;where I was&amp;quot; - it's only as accurate as I refresh it. If you're one of my pals - you may want to check out &lt;a href="http://www.tripit.com"&gt;www.tripit.com&lt;/a&gt; - I use this for planning all my travel so if you happen to be in Redmond or at a conference the same time as me - it's a great way for doing that. It's also a great itinerary planning tool that I've mentioned before - just forward your travel confirmation emails to their email bot and it will parse out and build up the itinerary for you nice and spiffy with Google Maps and weather forecasts for your destination. &lt;/p&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=136231" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Southern+Ontario/default.aspx">Southern Ontario</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Events/default.aspx">Events</category></item><item><title>Tech-Ed 2008 U.S. Developers Session Catalog Online</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2008/02/23/tech-ed-2008-u-s-developers-session-catalog-online.aspx</link><pubDate>Sun, 24 Feb 2008 03:33:14 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:131064</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/131064.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=131064</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=131064</wfw:comment><description>&lt;p&gt;&lt;a href="http://objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TechEd200.DevelopersSessionCatalogOnline_1364A/website_banner_dev_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="204" alt="website_banner_dev" src="http://objectsharp.com/cs/blogs/barry/WindowsLiveWriter/TechEd200.DevelopersSessionCatalogOnline_1364A/website_banner_dev_thumb.jpg" width="654" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;If you're thinking of heading down to Orlando June 3-6, 2008 - you can check out the list of sessions which has been recently posted &lt;a title="Tech-Ed 2008 US Developers Session Catalog" href="https://www.msteched.com/dev/public/sessions.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;You also have the option of rating sessions that you might be interested in. I assume this is to help plan room sizes. &lt;/p&gt; &lt;p&gt;I'll be doing a breakout session called "Building Next Generation Data Access Layers with the ADO.NET Entity Framework" in the Architecture Track. I'm really looking forward to it. Hope to see you there. &lt;/p&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=131064" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/TechEd/default.aspx">TechEd</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/VS2008/default.aspx">VS2008</category></item><item><title>Visual Studio 2008 and Windows Server 2008 for aspiring Architects</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2008/02/02/visual-studio-2008-and-windows-server-2008-for-aspiring-architects.aspx</link><pubDate>Sat, 02 Feb 2008 21:43:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:123851</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/123851.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=123851</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=123851</wfw:comment><description>&lt;P&gt;&lt;A href="http://objectsharp.com/cs/blogs/barry/WindowsLiveWriter/ArchitectTrainingforVisualStudio2008andW_D691/image_2.png"&gt;&lt;IMG style="MARGIN:0px 20px 0px 0px;" height=197 alt=image src="http://objectsharp.com/cs/blogs/barry/WindowsLiveWriter/ArchitectTrainingforVisualStudio2008andW_D691/image_thumb.png" width=160 align=left border=0&gt;&lt;/A&gt;Are you an architect or an aspiring architect interested in learning what's new this year for the MS platform?&lt;/P&gt;
&lt;P&gt;On February 11th, 2008 come to the MS Canada Office in Mississauga and visit yours truly and some other dazzling speakers to learn more about Visual Studio 2008 and Windows Server 2008. &lt;/P&gt;
&lt;P&gt;You can choose either the morning or afternoon session as your schedule permits. Only a 1/2 day out of your busy schedule and you'll know everything you need! Ok, well maybe not everything, but I hope that you'll be inspired to take the next steps in learning about technologies such as LINQ, Windows Communication Foundation and Windows Presentation Foundation and how you can make the most of these technologies in your applications.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032364802&amp;amp;Culture=en-CA"&gt;&lt;STRONG&gt;Register Here.&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;&lt;A href="http://technorati.com/tag/hhh_ca" rel=tag&gt;Technorati Tag&lt;/A&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=123851" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Southern+Ontario/default.aspx">Southern Ontario</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Services/default.aspx">Services</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Events/default.aspx">Events</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/WCF/default.aspx">WCF</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Home/default.aspx">Home</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/VS2008/default.aspx">VS2008</category></item><item><title>VS 2008 at The Movies, Feb 7, 2008 Toronto Paramount</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2008/01/18/vs-2008-at-the-movies-feb-7-2007-toronto-paramount.aspx</link><pubDate>Fri, 18 Jan 2008 20:09:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:117141</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>1</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/117141.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=117141</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=117141</wfw:comment><description>&lt;P&gt;&lt;A href="http://objectsharp.com/cs/blogs/barry/WindowsLiveWriter/VS2008atTheMoviesFeb72007TorontoParamoun_10B1A/Posters_Codefather_4.jpg"&gt;&lt;IMG style="BORDER-RIGHT:0px;BORDER-TOP:0px;MARGIN:0px 15px 0px 0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height=375 alt=Posters_Codefather src="http://objectsharp.com/cs/blogs/barry/WindowsLiveWriter/VS2008atTheMoviesFeb72007TorontoParamoun_10B1A/Posters_Codefather_thumb_1.jpg" width=256 align=left border=0&gt;&lt;/A&gt; Our designer is having a field-day with this "at the Movies" theme for our upcoming review of Visual Studio 2008 being held Feb 7th from 8:30am-12:00pm @ the Paramount in Toronto. Grab a copy of this movie poster before it gets "whacked" by the lawyers. &lt;/P&gt;
&lt;P&gt;Hope to see you there. Check out all the details after &lt;A class="" href="http://www.objectsharp.com/vs2008"&gt;this link&lt;/A&gt;.&lt;/P&gt;&lt;A href="http://technorati.com/tag/hhh_ca" rel=tag&gt;Technorati Tag&lt;/A&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=117141" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/VB.NET/default.aspx">VB.NET</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Southern+Ontario/default.aspx">Southern Ontario</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/WebForms/default.aspx">WebForms</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Events/default.aspx">Events</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/WCF/default.aspx">WCF</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Home/default.aspx">Home</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Newsletter/default.aspx">Newsletter</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/VS2008/default.aspx">VS2008</category></item><item><title>Visual Studio, SQL Server, and Windows Server 2008 Launch Events in Toronto</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2008/01/18/visual-studio-sql-server-and-windows-server-2008-launch-events-in-toronto.aspx</link><pubDate>Fri, 18 Jan 2008 18:18:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:117134</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/117134.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=117134</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=117134</wfw:comment><description>&lt;A href="http://objectsharp.com/cs/blogs/barry/WindowsLiveWriter/VisualStudioSQLServerandWindowsServer200_10DAD/clip_image001_2.gif"&gt;&lt;IMG style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height=158 alt=clip_image001 src="http://objectsharp.com/cs/blogs/barry/WindowsLiveWriter/VisualStudioSQLServerandWindowsServer200_10DAD/clip_image001_thumb.gif" width=199 align=right border=0&gt;&lt;/A&gt; 
&lt;P&gt;On February 27 in Toronto, MS Canada is hosting the official launch of the above mentioned products. The event will be all day long and in addition to a keynote from COO Kevin Turner, there will be some great breakout tracks running in parallel for IT Professionals, Developers, IT Managers, and Architects.&lt;/P&gt;
&lt;P&gt;The event will be held at the Direct Energy Centre downtown. Of course ObjectSharp will have a booth there with some great offers for both our Training and Professional Services along with some awesome prize raffles so please stop by. &lt;/P&gt;
&lt;P&gt;Also make sure to stop by the expert's area where several MVP's and speakers will be able to answer your individual questions including many of the MVP's from ObjectSharp.&lt;/P&gt;
&lt;P&gt;You can also register for this event &lt;A href="http://www.microsoft.com/canada/heroeshappenhere/register/default.mspx" target=_blank&gt;here&lt;/A&gt; along with all of the other cities and their events happening across Canada.&lt;/P&gt;
&lt;P&gt;And don't forget, we're also doing a 1/2 day briefing for developers &amp;amp; architects on VS 2008 at the Paramount in Toronto on February 7th. You can view the details &lt;A href="http://www.objectsharp.com/vs2008.aspx"&gt;here&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.objectsharp.com/vs2008.aspx"&gt;&lt;IMG height=98 src="http://www.objectsharp.com/images/vs2008/SplashImage.jpg" width=270&gt;&lt;/A&gt;&lt;/P&gt;&lt;A href="http://technorati.com/tag/hhh_ca" rel=tag&gt;Technorati Tag&lt;/A&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=117134" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/SQL/default.aspx">SQL</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/VB.NET/default.aspx">VB.NET</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Southern+Ontario/default.aspx">Southern Ontario</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Events/default.aspx">Events</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Home/default.aspx">Home</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Newsletter/default.aspx">Newsletter</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/VS2008/default.aspx">VS2008</category></item><item><title>TSPUG Presentation: Using Visual Studio 2008 for Developing SharePoint Workflows (and other stuff)</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2007/12/20/tspug-presentation-using-visual-studio-2008-for-developing-sharepoint-workflows-and-other-stuff.aspx</link><pubDate>Thu, 20 Dec 2007 21:43:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:107013</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/107013.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=107013</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=107013</wfw:comment><description>Last night I gave a presentation to the &lt;A class="" href="http://www.tspug.com/" target=_blank&gt;Toronto SharePoint Users Group&lt;/A&gt;&amp;nbsp;on using Visual Studio 2008 to build SharePoint Workflows. I also covered a little bit on LINQ to SharePoint and WCF/WF integration at the end. Attached are my slides. Enjoy.&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=107013" width="1" height="1"&gt;</description><enclosure url="http://www.objectsharp.com/cs/blogs/barry/attachment/107013.ashx" length="2032516" type="application/vnd.openxmlformats-officedocument.pres" /><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/VS2005/default.aspx">VS2005</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Southern+Ontario/default.aspx">Southern Ontario</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Services/default.aspx">Services</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Events/default.aspx">Events</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/WCF/default.aspx">WCF</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Home/default.aspx">Home</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Newsletter/default.aspx">Newsletter</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Visual Studio 2008 to ship by end of month!</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2007/11/05/visual-studio-2008-to-ship-by-end-of-month.aspx</link><pubDate>Mon, 05 Nov 2007 22:18:24 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:95774</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/95774.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=95774</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=95774</wfw:comment><description>&lt;p&gt;In case you didn't &lt;a href="http://www.microsoft.com/presspass/press/2007/nov07/11-05TechEdDevelopersPR.mspx" target="_blank"&gt;catch this&lt;/a&gt; S. Somasegar announced today during his TechEd Developers Keynote in Barcelona that Visual Studio 2008 will ship by the end of this month (November!). Yeah! Most people were counting on this before the end of the year which mean December or early January so this comes as a nice surprise.&lt;/p&gt; &lt;p&gt;We're talking about some cool technology:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Visual Studio 2008 (all editions)&lt;/li&gt; &lt;li&gt;Team Foundation Server 2008&lt;/li&gt; &lt;li&gt;.NET Framework 3.5&lt;/li&gt; &lt;li&gt;Language Integrated Query (LINQ)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Now of course the best feature in Visual Studio 2008 is multi-targeting. This features allows you to continue to develop .NET 2.0 or 3.0 applications without migrating to 3.5. There are lots of great features if Visual Studio 2008 - even if you don't move to .NET 3.5:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Unit Testing Framework now in the VS Pro Edition&lt;/li&gt; &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/06/21/vs-2008-javascript-intellisense.aspx" target="_blank"&gt;JavaScript Intellisense&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/19/vs-2008-javascript-debugging.aspx" target="_blank"&gt;Debugging&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/01/22/visual-studio-orcas-web-designer-integrated-into-main.aspx" target="_blank"&gt;New Web Designer&lt;/a&gt; with Split View, better CSS Support, Nested Master Pages, etc.&lt;/li&gt; &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/28/nice-vs-2008-code-editing-improvements.aspx" target="_blank"&gt;Intellisense Usability features&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;And if you are a Team System User&lt;/p&gt; &lt;ul&gt; &lt;li&gt;SharePoint 2007/WSS 3.0 or MOSS support&lt;/li&gt; &lt;li&gt;Simplified Installation&lt;/li&gt; &lt;li&gt;Better Offline Support&lt;/li&gt; &lt;li&gt;A &lt;a href="http://blogs.msdn.com/bharry/archive/2007/08/08/final-tfs-2008-feature-list.aspx" target="_blank"&gt;bunch of other stuff&lt;/a&gt; including Power Tool Rollups.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;And don't worry - you can install VS 2008 side by side with VS 2005.&lt;/p&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=95774" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/WebForms/default.aspx">WebForms</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Newsletter/default.aspx">Newsletter</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Don't let your VS2008 Beta2 VPC turn into a Pumpkin on Halloween at Midnight</title><link>http://www.objectsharp.com/cs/blogs/barry/archive/2007/10/27/don-t-let-your-vs2008-beta2-vpc-turn-into-a-pumpkin-on-halloween-at-midnight.aspx</link><pubDate>Sat, 27 Oct 2007 18:21:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:93545</guid><dc:creator>Barry Gervin</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/barry/comments/93545.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/barry/commentrss.aspx?PostID=93545</wfw:commentRss><wfw:comment>http://www.objectsharp.com/cs/blogs/barry/rsscomments.aspx?PostID=93545</wfw:comment><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/jeffbe/archive/2007/10/25/vs2008-beta2-vpcs-expiring-prematurely.aspx" target=_blank&gt;&lt;IMG style="MARGIN:0px 20px 0px 0px;" height=187 src="http://www.proudlyserving.com/images/c9gpumpkin.jpg" width=241 align=left&gt; Jeff Beehler blogs here&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/jeffbe/archive/2007/10/27/update-on-expiring-vs2008-beta2-vpcs.aspx" target=_blank&gt;here&lt;/A&gt; that the Visual Studio 2008 Beta 2 VPCs are prematurely expiring on November 1st. If you're using your VPC for demos - you'll be limited to 2 hours before you have to shut down. If you're using it for real work - that will be annoying - especially if you are using it for your TFS server Follow Jeff's links to instructions on backing that up and moving it. Look for new VPCs next week - hopefully we'll see a Release Candidate shortly.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Update:&lt;/STRONG&gt; Jeff has posted a link to updated VPCs &lt;A class="" href="http://blogs.msdn.com/jeffbe/archive/2007/10/30/vs2008-beta2-vpcs-re-released.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=93545" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Home/default.aspx">Home</category><category domain="http://www.objectsharp.com/cs/blogs/barry/archive/tags/Newsletter/default.aspx">Newsletter</category></item></channel></rss>