Showing posts with label EntityDataControl. Show all posts
Showing posts with label EntityDataControl. Show all posts

Saturday, June 14, 2008

ASP.NET Dynamic Data: Scaffold a Custom Administrative Web Site with a LINQ to SQL Data Model in Less than Five Minutes

This screen capture sequence illustrates the “Use the Wizard to Generate Custom Pages” topic of the Scaffold Web Apps with ASP.NET Dynamic Data cover story for the September 2008 issue of Visual Studio Magazine. The topic describes how to create a fully-functioning file-system Web site from the Northwind sample database.

Step 1: Launch Visual Studio 2008 or Web Developer Express SP1, start a new file-system Web site and select the Dynamic Data Website Wizard (Preview) template.

Step 2: Accept the Generate a New Data Model from This Database option and select a connection to an SQL Server instance with the Northwind sample database installed.

Step 3: Select the only the original Northwind tables to install; omit the Regions and Territories tables. (The May 23, 2008 Dynamic Data preview was limited to LINQ to SQL as the data model. If your version of this dialog has a Data Context Namespace text box, leave it empty.)

Step 4: Scaffold all eight EntitySets for your project with List, Details, Edit and Insert pages.

Step 5: Accept the default customization options. You can remove features that use DetailsView or FormView controls or elect to edit or insert pages inline with GridView or ListView controls.

Step 6: Click Edit to open the Edit Fields dialog. Clear columns for properties of the selected entity that you don’t want to appear in the GridView or ListView control. (This dialog was not fully cooked in the May 23, 2008 release on which this post is based.) Click OK and then click Finish.

 

Step 7: Generating the scaffolding code will add several files to existing project folders. Mark the Apply to All Items check box and click Yes to avoid repeated appearances of the Merge folders message box.

Step 8: Review and optionally rearrange the singularized EntityType widgets. Notice the addition of a prebuilt NorthwindDataContextPartialClass file and addition of a CustomPages subfolder for each EntitySet. (Click image for an 1024 x 768 screen capture.)

Step 9: Press F5 to build and run the project, clicking OK to dismiss the Debugging Not Enabled message box.

Step 10: Notice the insertion of the Web site name after the Domain:Port name and number for the default and other pages.

Step 11: Click Products to display the Products ListView. Notice that a column for ProductID is missing and that Category and Supplier columns are out of sequence when compared with the original sequence of entity properties. (Click image for an 1152 x 864 screen capture.)

Appearance After Formatting with CSS and Minor Heading Changes

Following are customized versions of the forms shown in steps 10 and 11 as well as a Supplier details page with 11-point Calibri substituted for the approximately 8.5-point (76%) default Tahoma and Trebuchet MS fonts as well as color saturation increased.

Figure 12: /DynamicDataWebSite/Default.aspx

Figure 13: /DynamicDataWebSite/Products/List.aspx (Click for 1172 x 864 pixel version). Notice that the DynamicFilter dropdown lists are missing from Wizard-generated ListView pages.

Figure 14: /DynamicDataWebSite/Suppliers/Details.aspx$SupplierID=1

Sample code for the project, which includes customization by manipulating table and field metadata, will be available when the article publishes.

Friday, May 23, 2008

LINQ and Entity Framework Breakout and TLC Sessions at Tech*Ed Developers 2008

This list was compiled from the Tech*Ed Developers 2008 Session Catalog with LINQ or ADO.NET as the Keyword.

Updated May 23, 2008 with date, time and code data from the ADO.NET Team's Going to TechEd? Drop by and say Hi! blog of the same date.

Breakout Sessions

Updated May 9, 2008: Added Julie Lerman's Advanced Entity Framework: Take Charge of Object Services session omitted accidentally. There are 19 LINQ, LINQ-related, and Entity Framework breakout sessions.

LINQ

LINQ to DataSet

Date: June 6 Time: 4:30pm-5:45pm Code: TA677 
Track: Database Platform Presenter: Erick Thompson Level: 300

Microsoft Visual Studio 2008 introduces a number of new technologies that make working with data a better experience. One of these new technologies is Language Integrated Query (LINQ). The LINQ to DataSet flavor of LINQ gives you the ability to leverage the power of LINQ in your DataSet based applications. This session demonstrates how you can use LINQ to DataSet to improve the performance and reliability of your existing code, as well as utilize new functionality.

XML LINQ: Linking in the Real World

Date: Time: Code:
Track: Developer Tools and Languages Presenter: Paul Sheriff Level: 300

LINQ technology in .NET 3.5 has some great hooks into XML that make using XML documents a breeze. This seminar explores how you will put this technology to work in your applications. Besides the obvious advantages of using LINQ to iterate over XML data, you can also use it to create and process XML documents. One great way you can use XML is in prototyping. In this seminar, see how to use LINQ and XML to create faster prototypes for your customers.

Microsoft Visual Basic 2008: Microsoft LINQ Language Tips, Tricks, and Best Practices

Date: Time: Code:
Track: Developer Tools and Languages Presenter: Amanda Silver Level: 300

LINQ (Language Integrated Query) is a key platform innovation introduced with Microsoft Visual Studio 2008, which brings SQL-style query expressions into Visual Basic and Visual C#, enabling you to describe what data to reason about instead of how to access the data. In this session, by taking a much closer look at the language features that enable LINQ-enabled frameworks, we uncover tips, tricks, gotchas and best practices for writing queries that will help you write robust, high-performing, maintainable business applications more quickly. In addition to gaining a solid understanding of LINQ for data access, you’ll also leave this session with a clear understanding of how query and the individual language features can be leveraged in other parts of your application to write less code.

Super-Optimized Microsoft LINQ: Indexed Objects

Date: Time: Code:
Track: Developer Tools and Languages Presenter: Aaron Erickson Level: 300

LINQ (Language Integrated Query) is a key platform innovation introduced with Microsoft Visual Studio 2008, which brings SQL-style query expressions into Visual Basic and Visual C#, enabling you to describe what data to reason about instead of how to access the data. In this session, by taking a much closer look at the language features that enable LINQ-enabled frameworks, we uncover tips, tricks, gotchas and best practices for writing queries that will help you write robust, high-performing, maintainable business applications more quickly. In addition to gaining a solid understanding of LINQ for data access, you’ll also leave this session with a clear understanding of how query and the individual language features can be leveraged in other parts of your application to write less code.

How LINQ Works: A Deep Dive into the Implementation of LINQ

Date: Time: Code:
Track: Developer Tools and Languages Presenter: Aaron Erickson Level: 400

Want to know what really happens when you execute your favorite LINQ queries? Curious how the same query expression can target either in-memory data or relational data? In this 400-level talk, Alex Turner, the C# Compiler Program Manager, uses Reflector and other tools to reveal exactly how the compiler translates LINQ query expressions. Gain a deeper understanding of LINQ’s functional roots as we see how lambda expressions and iterator methods enable LINQ to Objects' elegant syntax. Then find out what's the same and what's radically different as we explore LINQ to SQL and the expression trees that make it tick.

Real-World LINQ to SQL

Date: June 3 Time: 1:15pm-2:30pm Code: TC19F
Track: Developer Tools and Languages Presenter: Anthony Sneed Level: 400

Take a deep dive into a real-world LINQ to SQL application that seeks to exploit the full capabilities of the object-relational mapping technology released with Microsoft .NET Framework 3.5 and Microsoft Visual Studio 2008. This talk focuses on best practices for incorporating LINQ to SQL into your data-driven Windows Forms or Windows Presentation Foundation application, including the use of eager loading, pass-through SQL, batch updating with stored procedures, concurrency control, and disconnected scenarios. We also address object caching and identity issues, as well as support for distributed transactions.

Parallelize Your Microsoft .NET Framework-Based Applications with Parallel Extensions

Date: Time: Code:
Track: Development Practices Presenter: Steven Toub Level: 300

With the Microsoft .NET Framework today, correctly introducing concurrency into libraries and applications is difficult, time consuming, and error-prone. However, as the hardware industry shifts towards multi-core and manycore processors, the key to high-performance applications is parallelism. Parallel Extensions to the .NET Framework offers solutions to help make writing concurrent applications significantly easier. In this session, we dive into Parallel Extensions, exploring Parallel LINQ-to-Objects (PLINQ), the Task Parallel Library (TPL), the underlying concurrency runtime, and more, in order to provide an in-depth look at the next generation of parallel programming with .NET.

Introduction to Mock Objects and Advanced Unit Testing

Date: Time: Code:
Track: Development Practices Presenter: Roy Osherove Level: 300

If you've played around with Unit testing but are not sure what the deal is with Mock Objects, Stubs and the like, this talk is for you. We cover, among others: what Mocks and Stubs are, hand-written mocks and stubs, dynamic mock objects using Rhino Mocks and Typemock, dependency injection techniques for Mocks and Stubs, and more; and how to mock out LINQ Queries and extensions methods.

Use the Open XML SDK and LINQ to Program the Microsoft Office Open XML File Formats

Date: Time: Code:
Track: Office and SharePoint Presenter: Ken Getz Level: 300

Although the Packaging API makes it possible to manipulate the Office Open XML Formats directly, it doesn’t make it easy. The Open XML SDK provides a consistent and neat wrapper around the API, making it far easier to get to the parts you need. Once you get to the part, however, you’re still simply working with XML content. To make this easier, LINQ to XML provides a superb tool. Both Microsoft Visual C# and Visual Basic provide support for LINQ to XML, and Visual Basic adds specific features that make the process far easier. In this session, see how to use the Open XML SDK and LINQ to XML to manipulate Open XML File Formats. Special attention is paid to the issues involved in handling namespace resolution, a tricky issue in any situation.

Integrating Windows Presentation Foundation and Windows Communication Foundation into Your Office Business Applications 

Date: Time: Code:
Track: Office and SharePoint Presenter: Tim Huckaby Level: 400

This session highlights many of the ways that the Windows Presentation Foundation (WPF) and the Windows Communication Foundation (WCF) can be leveraged in applications built with Visual Studio Tools for the Microsoft Office System (VSTO). Visual Studio 2008 introduced an array of new features aimed at a wide range of Office solution types. With Visual Studio 2008, you can build solutions that incorporate the native capabilities of the Office client applications (like Outlook) combined with the sophisticated UI capabilities of WPF that's connected to remote data and services via WCF and use the RAD features of LINQ to manipulate that data. These new technologies provide opportunities for building powerful solutions with functionality that was previously difficult or impossible to achieve. Now that Microsoft Office has evolved into a true development platform, solutions based on Office are becoming increasingly sophisticated, less document-focused, and more loosely coupled. This session shows you how easy it is to build robust solutions that leverage the latest technologies. WPF provides developers and designers with a unified programming model for building rich Windows smart client user experiences with Office client applications that incorporate UI, media, and documents. WCF contains a support framework and a design-time toolset for building service-oriented solutions that connect rich Office clients with powerful server-side functionality and remote data access. Visual Studio 2008 provides a simple GUI wizard that lets you consume WCF services without having to worry about service metadata, protocols, or XML configuration.

Jumpstart Data Driven Web Applications with ASP.NET 3.5 (Part 1 of 2)

Date: Time: Code:
Track: Web and User Experience Presenter: Scott Hanselman Level: 200

Explore the new features in ASP.NET 3.5 that make buliding data driven Web applications a breeze. In this first of a two-part series, learn how to use LINQ to take the pain out of interacting with your relational data and how support for LINQ and its constructs are built into the paradigms you are familiar with in ASP.NET and Microsoft Visual Studio 2008.

Using Data and Web Services in Your Microsoft Silverlight Application

Date: Time: Code:
Track: Web and User Experience Presenter: Hamid Mahmood Level: 300

This session covers how to use data in your Silverlight beta 1 application. Learn how to get the data (in brief… networking is well covered in other talks), how to manipulate the data (LINQ/XLINQ), how to bind the data (Databinding), how to show the data (dive into a few data relevant controls, notably Datagrid), how to validate the data, and how to store the data (isolated storage).

Building Rich Internet Applications Using Microsoft Silverlight 2 (Part 2 of 2)

Date: Time: Code:
Track: Web and User Experience Presenter: Mark Rideout Level: 300

Silverlight provides a powerful platform for building the next generation of rich interactive applications on the Internet. In this session, we demonstrate building a rich interactive application (RIA) using Silverlight and Microsoft .NET. We cover how to use Microsoft Visual Studio to create applications, how to create UI using XAML markup and code, how to build a custom control, how to retrieve data from a Web service, and how to manipulate data with XML and LINQ.

An Introduction to LINQ on Devices

Date: Time: Code:
Track: Windows Mobile Presenter: Dan Fergus Level: 300

We’ve all heard the hype, now let’s look at the reality. There are some great things about LINQ, some of which are not supported on devices. But there is much to learn to begin using LINQ effectively. The first is to know what exactly it is and what it can do for you. With a firm foundation, we then look at how to implement LINQ and discuss how it can be implemented.

Entity Framework

Understanding the ADO.NET Entity Framework

Date: June 6 Time: 4:30pm-5:45pm  Code: TA677
Track: Developer Tools and Languages Presenter: Erick Thompson Level: 300

Most Microsoft .NET Framework-based database applications out there use ADO.NET to access and manipulate data, and most of them have a data-access layer built on top of ADO.NET to abstract out many of the details related to data-access that can get in the way of business logic. In this session, we introduce the ADO.NET Entity Framework, a high-level data library that pushes up the level of abstraction application developers need to work at when dealing with data in databases. We discuss how the system supports conceptual modeling, the use of the object services layer to do object-relational mapping, and how great integration with LINQ (Language Integrated Query) brings new levels of productivity to the data-access development space.

Microsoft .NET Framework 3.5 Data Access Guidance

Date: June 5  Time: 2:45pm-4:00pm Code: T276B
Track: Developer Tools and Languages Presenter: Julie Lerman Level: 300

With .NET 3.5, developers now have to choose between “classic” ADO.NET, LINQ to SQL, and a number of options using Entity Framework. The ADO.NET 3.5 Entity Framework presents us with a slew of new options for accessing data which you will learn about during this conference. This session compares and contrasts DataSets and DataReaders, Object Services and Entity Client; Entity SQL, LINQ to Entities and LINQ to SQL, providing guidance as to which methods are appropriate in particular scenarios. We also examine this functionality with respect to both creating new solutions and plugging the Entity Framework into existing applications.

Advanced Entity Framework: Take Charge of Object Services

Date: June 5 Time: 10:15am-11:30am Code: T7D80
Track: Developer Tools and Languages Presenter: Julie Lerman Level: 300

The Entity Framework combined with the Entity Data Model (EDM) bring data access to a new level in Enterprise Applications. Entity Framework Object Services APIs, while providing a lot of automated functionality, are filled with features that give developers much more control over how objects are handled. The most important jobs of the ObjectContext are relationship management and change tracking. This session drills into how the ObjectContext manages relationships and how you can control its behavior. This is especially important in SOA scenarios where you may need to transport ObjectGraphs. We also look closely at change tracking, focusing on the challenges and solutions for dealing with data concurrency when moving objects across tiers in your enterprise applications. Knowing what to expect from these features and how to take control of them will empower you in your use of the Entity Framework and EDMs in your Web sites, SOA applications, and smart clients, as well as other applications that share the EDM.

Added: May 9, 2008

Building Next Generation Data Access Layers with the ADO.NET Entity Framework

Date: June 3 Time: 4:45pm-6:00pm          Code: ARC305
Date: June 5 Time: 2:45pm-4:00pm          Code: ARC305R
Track: Architecture Presenter: Barry Gervin Level: 300

As Developers, we've been building components in our data access layer (DAL) with ADO.NET classes such as Connections, Commands, DataReaders, DataSets and our own custom Helper classes and Data Classes. We build data access layers with a clear separation of concerns between business logic, data access, and data storage. We do this to increase cohesion and maintainability of our code, and also to increase developer productivity. What does this exactly mean in terms of the Entity Framework? What is the best approach to using the Entity Framework within our Data Access Layer? There are several workable models for leveraging the Entity Definition Model (EDM) within our applications. On one end of the spectrum, we can use the Entity Definition Model as a tactical tool for data access which is isolated to our Data Access Layer. This hides the Entity Framework from the rest of our application, effectively separating the concern of data access from the rest of our application. Another technique includes leveraging the conceptual Entity Definition Model deeply throughout our solution's layers and tiers. In this session, we compare and contrast these approaches including the middle ground, and see how these architectural choices affect maintainability, readability, and developer productivity. Most developers don’t frequently have the opportunity to start from a fresh slate, so we’ll also examine a refactored evolution from traditional data access layers through to incremental use of the Entity Definition Model.

ADO.NET Entity Framework: Application Patterns

Date: June 6    Time: 10:15am-11:30am Code: T34C4
Track: Development Practices Presenter: Shyam Pather  Level: 300

Microsoft is introducing the ADO.NET Entity Framework and the Entity Data Model to help developers work at the right level of abstraction when creating business applications, and let the system worry about the details on how to deal with the underlying database. Like any new technology, most of the information available on the topic focuses on what the Entity Framework is, what are its constituting components and related aspects. There is a need for information on how to actually apply the technology to solve concrete problems in various application scenarios. This session discusses application patterns for the Entity Framework in each of the major application models such as Web applications, SOA-style systems, and data-centric services.

Technical Learning Center (TLC) Sessions

There are three TLC sessions.

LINQ to XML: Plumbing the Depths

Date: June 6 Time: 2:45pm-4:00pm Code: T4398
Track: Developer Tools and Languages Presenter: Shyam Pather  Level: 300

This session provides you the opportunity to expand your knowledge of LINQ to XML. XML permeates the world of data, from content to formatting to services. LINQ to XML is a new way to query this ubiquitous data format using the power of Language Integrated Query (LINQ). LINQ to XML provides both DOM and XQuery/XPath-like functionality, all from within your source code. Additionally, Microsoft Visual Basic 9.0 adds XML as a built-in data type and uses LINQ to XML to allow developers to write what they intend, without compromising best practices. This session explores these capabilities, and shows how LINQ can improve your code and its reliability.

LINQ to XML, SQL, Entities, DataSets, and Co: Data Access Technologies Explained

Date: June 5 Time: 1:00pm-2:15pm Code: T8808
Track: Developer Tools and Languages Presenter: Shyam Pather  Level: 300

With the release of the Microsoft .NET Framework 3.5, Microsoft introduced several new data access technologies based on its LINQ technology, such as LINQ to SQL and LINQ to DataSets. Shortly after, we expect Microsoft to release the ADO.NET Entity Framework which enables LINQ to Entities in addition to Entity SQL. Finally, we have all the existing ADO.NET data access patterns. This raises one important question: Which data access technology is best suited for which situation? In this session we look at different scenarios and requirements that can inform your technology decision.

Using LINQ, the ADO.NET Entity Framework and ADO.NET Data Services with Third Party Databases

Date: June 4 Time: 2:45pm-4:00pm Code: TCD2B
Track: Windows and Frameworks Presenter: David Sceppa  Level: 300

The ADO.NET Entity Framework extends the existing ADO.NET provider model to allow provider writers to make their data stores available through the Entity Framework. This model allows developers to execute store agnostic queries against their data stores using LINQ, Entity SQL or ADO.NET Data Services. Provider writers will be in attendance at this Interactive Theater presentation to talk about their plans to support the Entity Framework and demonstrate their current bits.

Sunday, April 27, 2008

LINQ and Entity Framework Posts for 4/21/2008+

Note: This post is updated daily or more frequently, depending on the availability of new posts.

Julie Lerman Unveils the Forthcoming ASP.NET EntityDataSource Control

Danny Simmons demonstrated the EntityDataSource control at the MVP Summit 2008 and Julie shares her notes in Sneak Peek at the EntityDataSource Control of April 27, 2008. The EntityDataSource control is the Entity Framework's answer to LINQ to SQL's LinqDataSource control for databinding ASP.NET GridView, ListView and other bindable server controls.

Two important EntityDataSource control features that Julie describes are:

Although I don't remember seeing it during the session, Danny did say that you can choose to eager load related data in the same way that you can with the Include method. I don't know how this is done or if it will impact updating, but I don't know why it would.

One of the most interesting things about the EntityDataSource is that along with its' ability to perform server side paging, it also performs client side caching - of current AND original data. The original data is not stored as complete objects, but the minimal data necessary to reconstruct state when it's time to update. Updates happen, like any other data source, one at a time. So you have to pick an item, edit it and update it.

Availability of the EntityDataSource control will enable ASP.NET Dynamic Data scaffolding to use EF as an alternative to LINQ to SQL as its data source. (See David Ebbo's Dynamic Data at MIX, and upcoming changes post of March 6, 2008.

Hopefully, the EntityDataControl won't share the problems with the LinqDataControl that Julie described in her January 22, 2008 Thinking about the EntityDataSource post.

Note: The link to the OakLeaf blog in the latter post goes to the home page. Julie might have intended to link to go to the Problems Using Stored Procedures for LINQ to SQL Data Retrieval (Updated) post of October 2, 2007. That post contains a "Problems with Stored Procedures That Affect ASP.NET Projects Only" section, which covers sorting and paging problems.

Added: April 27, 2008

Jeremy Miller Reports on the MVP Summit 2008: Still Not Thrilled with the Entity Framework

The NHibernate Mafia weren't fighting the Persistence Ignorance battle at this year's MVP Summit, but Jeremy still isn't happy about the current (Beta 3) Entity Framework (EF) implementation. He says in A Train of Thought -- MVP Summit 2008 Edition of April 23, 2008:

    • I'm still not thrilled with the Entity Framework and the direction they locked themselves into, but the EF team came prepared to talk about some compromises that might start pushing EF into the usable category for me. I honestly wouldn't care about the EF, but I'll probably be back in consulting at some point in the next 5 years at a shop that will only use Microsoft tooling.
    • Daniel Simmons gets the "Thickest Skin of the Year" award. Not the Hyperion/Endymion Dan Simmons though.

Apparently the NH-Mafia worked Danny over again on EF issues.

In the "What I want for Christmas from Redmond" department, Jeremy's wish list includes:

    • Transparent lazy loading in the Entity Framework. If they want the Entity Framework to be usable in constructing rich Domain Models, they're going to have to do this.

EF enables lazy loading by default, but requires invoking the Load() method to retrieve the associated objects form the server. As Danny Simmons says in item 11. Lazy Load and Eager Load of his Entity Framework FAQ (updated 1/4/2008):

The entity framework attempts to make everything explicit, so even with lazy loading, you must explicitly call the Load method on the relationship in order to load its related entities. That way you know exactly when round trips are made to the database. As systems grow larger and more complex, this kind of explicitness can do a lot to improve overall supportability of the system.

I'm fine with calling Load(). Most of my projects involve multiple tiers, stored procedures, or both, so I ordinarily use eager loading by invoking Attach() with a filter to control depth, as Danny described in his Filtered association loading and re-creating an entity graph across a web service boundary... post of December 21, 2007.

Added: April 26, 2008

Colin Meek Elaborates on Generating Dynamic LINQ Expressions

Colin presented "VMS307: Visual Studio 2008: LINQ Deep Dive and Best Practices" at DevConn 2008 Orlando. His Using LINQ Expressions to Generate Dynamic Methods post extends his session's discussion of the ADO.NET Entity Framework Extension that "materializes  arbitrary CLR types given a data reader or DB command." Colin says:

The System.Linq.Expressions API serves a specific need for integrated queries: it allows the compiler to describe the user’s code as a data structure that can then be translated to targets other than MSIL at runtime, like SQL, Web Services, etc. Expressions can also be compiled into delegates at runtime, which brings me to a .NET 3.5 solution to the default shaper problem… If the compiler can use expressions to describe code, so can we!

Added: April 26, 2008

Rafik Robeal on Local Storage and Synchronization in HTML 5

HTML5 - The Offline Web of April 25, 2008 observes that HTML 5 will contain APIs for persistent storage in key/value and SQL databases and for offline Web applications. Rafik observes:

Isn’t interesting that despite the current networking revolution people are building the next web to work offline!? It is not strange to me but for many people this is bizarre. ...

To me, offline is an experience and programming model. Offline experience is all about richness, responsiveness, and better use of the data pipe. An offline programming model is what I’ve been showing people with Sync Services.

It's obvious that Ray Ozzie and Dave Treadwell share Rafik's enthusiasm for synchronization.

Added: April 26, 2008

Beth Massi Explains How to Query HTML with LINQ to XML

Beth's Querying HTML with LINQ to XML post of April 25, 2008 shows you how to use LINQ to XML to query HTML pages by removing markup entities, such as  , that cause the document to be malformed by XML standards.

Added: April 26, 2008

Pat Helland to Present at UC Berkeley's Tribute to Honor Jim Gray

Pat Helland, an architect on the Visual Studio team, will give the "Jim as a Mentor: Colleagues" presentation at the University of California Berkeley's Tribute to Honor Jim Gray. Pat, who worked with Jim Gray at Tandem Computers in the 1980s, announced in his Knowledge and Wisdom -- A Tribute to Jim Gray post of April 25, 2008 that his two-page paper for a special edition of the SIGMOD Record is available for download. The paper summarizes Pat's "experiences with Jim's approach to nurturing and mentoring."

From the press release for the Tribute:

Three organizations dedicated to the advancement of computing science, IEEE Computer Society, ACM, and UC Berkeley, today announced they will join the family and colleagues of Jim Gray in hosting a tribute to the legendary computer science pioneer, missing at sea since Jan. 28, 2007.

The tribute will be held May 31 at UC Berkeley’s Zellerbach Hall. The general session will be from 9-10:30 a.m., followed by technical sessions that will require registration. Registration and other information can be found at: http://www.eecs.berkeley.edu/ipro/jimgraytribute

You can learn more about Jim Gray's mysterious disappearance at sea of and the search for him from these two contemporaneous OakLeaf posts: U.S. Coast Guard Searching for Jim Gray off San Francisco Coast of January 29, 2008 and "Friends of Jim" Halt Volunteer Search for Jim Gray of February 17, 2007.

Added: April 26, 2008

Eugenio Pace Implements a Simple Unit of Work Pattern for SSDS

SQL Server Data Services don't support client-side transactions, so implementing the Unit of Work pattern requires compensating actions in the event one element of multiple related updates fails after previous actions have succeeded.

Eugenio's LitwareHR on SSDS - Part VI - Unit of Work support post of April 25, 2008 describes how he modified his Repository class for the LitwareHR application to implement a simple version of the Unit of Work pattern.

Added: April 25, 2008

Sync Guru (Rafik Robeal) Questions the Problems Live Mesh Will Solve

Rafik Robeal was the technical driving force behind ADO.NET Sync Services, which is now part of the Microsoft Synchronization Framework, in turn a component of the Microsoft's new Live Mesh project. Rafik's moved on to mobile development, but his The Mesh – A New Synchronization Backbone post of April 24, 2008 asks the same questions I've been pondering:

[W]hat is the key problem that Live Mesh is trying to solve?

  1. Is it remote access? ...
  2. Is it data sharing? ...
  3. Is it data collaboration? ...
  4. Is it data synchronization platform? ...

Rafik believes it's basically #3 and #4 for consumers. I've got access to the Live Mesh Technology Preview, but both Rafik and I are waiting for the Live Mesh SDK to learn more about its API and data models.

My initial answer to Rafik's question is loss of developer mindshare and potential platform lock-in to Platforms as a Service (Paas) from Google, Amazon, Adobe and, perhaps, SalesForce.

Podcast: For more details about Microsoft's plans for Live Mesh from David Treadwell, corporate vice president of Microsoft's Live Platform Services and the exec behind SQL Server Data Service (SSDS) deployment as a Live Platform, read Dan Farber's Live Meshing on the Gillmor Gang post of April 25, 2008 and the Gillmor Gang's interview podcast.

Mary Jo Foley's Ten things to know about Microsoft’s Live Mesh of April 22, 2008 provides additional Live Mesh background.

Added: April 25, 2008

Doug Rothaus Performs Identity Transforms with LINQ to XML's ReplaceWith() Method

Doug demonstrates replacing an <eEmail> element with an <a href="mailto:" & eMailAddress ... >... element by using VB's XML literals and LINQ to XML's ReplaceWith() method in his VB XML Cookbook, Recipe 3: Identity Transforms (Doug Rothaus) post of April 25, 2008. A relatively simple pair of VB functions make a substitution that would require a significantly more lengthy XSLT transform.

Added: April 25, 2008

Mike Flasko: Astoria Team Targeting Silverlight 2.0 Beta 2 for REST Services

In the Astoria Team's Using REST Services in Silverlight post of April 24, 2008, Mike Flasko says:

[W]e are targeting Beta 2 of the Silverlight SDK (no dates to announce for this just yet) to have a version of the client library for ADO.NET Data Services. Given that we use many of the core pieces of Silverlight to enable data service interaction, we've waited for those to come into the platform so that we can start to round out our Silverlight experience. 

The scenarios we're looking to enable in Beta 2 are: the ability to send async queries, inserts, updates and deletes for same domain requests.  We're still working through how we'll enable these types of requests in cross domain scenarios.

I believe most of us were expecting an Astoria CTP for Silverlight 2.0 Beta 1 at the end of April, along with Beta 4 or a post-Beta 3 CTP of the Entity Framework. Doesn't look that way now, at least for Silverlight.

Added: April 24, 2008

Randolph Cabral Starts Exploring N-Tier Architecture with LINQ to SQL Series

Randy's Part 1 - Analyzing LINQ to SQL Entities post of April 23, 2008 follows up his earlier Active Record Vs. Unit of Work analysis of April 3 with an attempt to "marry" the Active Record and Unit of Work patterns with LINQ to SQL's DataContext.

He promises:

In the next post, we’ll take a look at the DataContext class and evaluate how we could best take advantage of its object tracking capabilities.  I’ll also explore writing a context manager class that helps ease the pains in dealing with the DataContext.

Added: April 24, 2008

Eric White Posts Second Edition of His Functional Programming Tutorial for LINQ Queries

Query Composition using Functional Programming Techniques in C# 3.0 of April 23, 2008 is Eric's 34-part rewrite of his original 2006 version. Eric says:

As with the previous tutorial, I've targeted this tutorial to C# developers who have no functional programming experience, i.e. the typical object-oriented coder.

One thing that I want to say at this point: This stuff is easy. It's also really fun. You don't have to read academic papers to learn about, enjoy, and benefit from functional programming in C# 3.0. There are about half a dozen concepts you need to learn, each one easy. Concepts like just a new way to write a method (that has no name), or a new way to write a static method for a class. Then you put them all together, and the result is more than the sum of the parts.

As you might expect, based on Eric's day job as an Open XML technical evangelist, he "shows you how to write code to extract the text of paragraphs of an Open XML document, along with the associated style of each paragraph."

Added: April 24, 2008

Jean-Paul Boodhoo Argues His Preference for var with Meaningful Variable Names

J-P says in his Got var? post of April 22, 2008:

As I strive toward more readable, intent revealing code, I find myself looking at the intent behind the usage of the variable coupled with a meaningful name, vs the actual type. In reality, I find the the argument to not use var is a moot point in a static environment that provides you with all the information you need once you hit the "."

His IList<Customer> listOfCustomers = new List<Customer>() example looks a lot like VB's and Access VBA's Hungarian notation that I spent 15 years writing.

Be sure to read the comments.

Added: April 24, 2008

Scott Hunter: New Refresh of Dynamic Data Runtime and Tools is Posted

The headline says it all. Sample code that's updated to work with the latest runtime is also available from the Code Gallery. The new Runtime and Tools drop includes (incomplete) documentation in CHM format.

Added: April 24, 2008

Pablo Castro Analyzes RESTful Optimistic Concurrency Management for Astoria with HTTP 1.1 Entity Tags

Pablo's Optimistic Concurrency & Data Services post of April 22, 2008 describes how HTTP 1.1 entity tags (ETags) can be used to detect whether a server resource has changed before accepting a client modification. The client keeps a copy of "opaque data," such as a version number or timestamp obtained from the server by a GET request. The client submits it in an if-match request header with its HTTP PUT or DELETE request. A failed match returns a 412 "Precondition Failed" status code to the client. Clients can override the match requirement by substituting an asterisk (*) for the opaque data.

ETags in the request header work for single entities; for collections, the plan is to add the ETag as metadata <entry m:type= "someType" m:etag="someValue" ...> to AtomPub and and in JSON's "__metadata" property.

Pablo observes a fly in the ointment: the definition of "strong" and "weak" eTags in section 13.3.3, "Weak and Strong Validators," of RFC 2616 - Hypertext Transfer Protocol - HTTP 1.1. HTTP 1.1 lets validation values remain unchanged when "no significant change in semantics" occurs. Weak TAGS apply only to GET operations, not PUT and DELETE, where he wants to use them.

P.S.: In a post of the same date to his personal blog, The Astoria team is hiring!, Pablo notes that the Astoria team is "looking for folks for Development, Quality Assurance and Program Management positions." It's likely that the team is staffing up to take on the challenge of aligning ADO.NET Data Services and the Entity Data Model (EDM) with SQL Server Data Sources (SSDS).

Eugenio Pace Takes the Complexity Out of SSDS Cross-Container Queries with .NET Parallel Extensions

In his More on parallel queries across containers in SSDS post of April 22, 2008, Eugenio shows the original code he used to implement the CrossContainerSearch() method he described in his earlier LitwareHR on SSDS - Part V - Searching across Containers post.

In this post, he finds that the scheduling, join and state management operations can all be handled by the .NET Parallel Extensions' Parallel.For() method, which greatly simplifies the code.

Eric White Creates a GroupAdjacent LINQ Query Operator for OpenXML Documents and LINQ to XML

Eric notes in his The GroupAdjacent Query Operator Extension Method post of April 20, 2008 that:

Quite often when you are processing an Open XML document using LINQ to XML, you want to group adjacent paragraphs that have the same style.

Let's say that the above array represents paragraphs in a document.  If the value is > 0, the paragraphs are a heading of the specified level.  The zeros represent paragraphs styled as normal.  We want to do some processing on the collection of paragraphs in such a way that we process all adjacent paragraphs of the same style in a single query.  We could group them, and execute a query on each group, but as you saw above, the standard GroupBy extension method will group all of the 0's together and all of the 2's together.

Given this array: int[] ia = new int[] { 1, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0 };

GroupAdjacent groups them like this: In contrast, the standard GroupBy method groups them like this:
Group 1
1
Group 0
0
0
Group 2
2
Group 0
0
0
0
Group 2
2
Group 0
0
0
0
Group 1
1
Group 0
0
0
0
0
0
0
0
0
Group 2
2
2

I believe the GroupAdjacent() query operator will prove quite useful for general LINQ to XML processing, not just OOXML work.

Rob Conery Deep Dives into LINQ to SQL Data Access for his MVC Storefront Project

Rob continues the Webcasts of his ASP.NET MVC Storefront project in ASP.NET MVC: MVC Storefront, Part 4 of April 21, 2008:

In this webcast I dive pretty deep into Data Access and talk about some architectural decisions I need to make, specifically how to get LINQ To SQL to map to my model properly. ...

Steven Harman suggested I run a Spike (a quick prototyping exercise to test out a theory) to make sure that my data access strategy will work with an actual database. Good idea.

I quickly ran into some issues with LINQ To SQL, but found some neat ways to keep things clean and tidy so I don't explode my database all over my happy little application.

Previous episodes are:

Update April 24, 2008: Rob's ASP.NET MVC: MVC Storefront, Part 5 covers globalization issues.

Scott Hanselman Interviews Scott Hunter About ASP.NET Dynamic Data

Scott Hunter is a program manager on the ASP.NET Dynamic Data team. The Hanselminutes podcast is at <ASP.NET Dynamic Data with Scott Hunter/>.

Matthew Hunter Continues Improvements to his LINQ to SQL Entity Base Implementation

Matt describes these improvements:

  1. There is no longer need to have a timestamp field
  2. Option to keep original entity values.

to his LINQ to SQL Entity Base implementation in his Improvement: No requirement for timestamp column any longer post of April 23, 2008.