Over the past few weeks I’ve been playing with the new ASP.NET 5 (also known as ASP.NET vNext) bits using Visual Studio 2015. I’m trying to make sense of the new changes and how they will affect how I build websites. I’d like to share some of what I’ve learned about the new stack.
Url: http://msdn.microsoft.com/en-us/library/ff84745...
If you've been following my blog, you should know that I am keeping a pretty close watch on ADO.NET Data Services. The team recently released a second CTP of the new version with some interesting features. This CTP has some pretty compelling additions, but I am going ot focus on one in particular.
Url: http://blogs.msdn.com/adonet/archive/2009/04/04...
Url: http://www.silverlightshow.net/shows/Consuming-...
Url: http://notatpdc.com/presentations/
There is a known problem with ADO.NET Data Services today that is important if you (or your server) lives in specific timezones. The problem is associated with the way that the Silverlight Data Services Library constructs their URI for searches.
In building my Silverlight RC example using ADO.NET Data Services for Entity Framework and NHibernate I ran into what I think is a common pattern. I am writing an editor for XBox game data. The model for this data uses decorator tables in the database which are modeled as a common "Product" class and derived "Game", "Console" and "Accessory" classes. In the application I am using paging to only look at fifty results at once. This works fine on both sides.
Url: http://ayende.com/Blog/archive/2008/09/11/NHibe...
Url: http://wilderminds.blob.core.windows.net/downloads/sl2_ds_example.zip
Url: http://blogs.msdn.com/astoriateam/archive/2008/...
Url: http://msdn.microsoft.com/en-us/magazine/cc7942...
Url: http://msdn.microsoft.com/en-us/magazine/cc7942...
Data is a funny business. While at the moment I am spending a lot of time teaching Silverlight, my passion still lives in the data. I was brought up on Minisystems (Multi-user CP/M and the like) where you were dealing with something like a database (though we didn't have that as firm a concept as you might think). Later I did quite a lot of desktop database development starting with dBase II (yes, I am that old), Paradox, Clipper, FoxPro and even Access. That naturally led to client-server and N-Tier development. Throughout all the time its become exceptionally clear how much data matters to most applications.
Url: http://timheuer.com/blog/archive/2008/08/11/vis...
To many developers this may seem odd. I talk with many staunch ALT.NET guys, and the DDD philosophy seems to be that data is a top-down or at worse, bottom up design problem. The issue here is that there is an assumption that just simply not true that data design is part of most software development projects. The reality based on my experience as well as the experience of talking with developers in the community is that many projects (though its hard to exactly quantify what percentage) begin with existing data. This is especially true in the enterprise where data exists in many forms from new databases, legacy servers (e.g. mainframes) or even flat files and XML. It is the rare project that is new code against all new data.
The Entity Framework "No Confidence Vote" is a couple of days old now. I wanted to give the Internet a couple of days to chew it over and figure out where it really fit into the big picture. If you follow me on Twitter you may have seen some back and forth between Scott Belware and I recently. Most of this back and forth has been about his attacks of the Microsoft community (attacks of the technology or even the company are fair game as far as I am concerned). Getting personal by accusing me, the Microsoft community or even individual EF Team member's directly seems petty and unnecessary.
Url: http://www.fiddler2.com/fiddler2/
Url: http://msdn.microsoft.com/en-us/data/bb931106.aspx
There is a bug in the current ADO.NET Data Services that ships with .NET 3.5 SP1 Beta 1. The problem involves saving related data. If the child object requires the relationship to the parent object, the update fails.
I've known Julie Lerman (or is it Julia these days ;) for a long time now. She's an excellent resource for everything data related. In particular she's been keeping up with the Entity Framework and ADO.NET Data Services (formerly Astoria) updates in .NET 3.5 and VS SP1 Beta that was just released this week. If you are upgrading projects (like I am), she has two excellent blog posts about how to upgrade your projects:
If you havent voted, please feel free to vote for what data access strategy here:
I had interesting conversations with a number of people about different data access/ORM strategies at MIX recently and was trying to understand where people are spending their efforts in consuming data. The conversation was essentially a discussion of who is using what to access data in .NET applications. I had assumed that certain solutions were widely used and others were not but I didn't have a good idea of what the market was really like. To help me with this I am asking you (my readers) to share with me where you are investing time in data access by taking the following poll:
Url: http://www.alabamacodecamp.com
Url: http://hanselminutes.com/default.aspx?showID=115
Url: http://www.microsoft.com/downloads/details.aspx...
Url: http://astoria.mslivelabs.com/Using%20ADO.NET%2...
Url: http://weblogs.asp.net/scottgu/archive/2007/12/...
Over the past week there have been a flurry of new projects coming out of Microsoft, mostly in the form of CTP's. I've been downloading like crazy and will likely be discussing my experience with them in the coming week. In case you missed any of them:
Url: http://silverlightdata.com
Url: http://silverlightdata.com
Url: http://www.silverlightdata.com
Url: http://msevents.microsoft.com/cui/EventDetail.a...
Url: http://blogs.msdn.com/dsimmons/archive/2007/09/...
Url: http://wilderminds.blob.core.windows.net/downloads/testef.zip
Url: http://blogs.msdn.com/adonet/archive/2007/07/02...
Url: http://www.theserverside.net/tt/articles/showar...
Url: http://www.panopticoncentral.net/archive/2005/0...
Url: http://www.microsoft.com/downloads/details.aspx...
Url: http://wilderminds.blob.core.windows.net/downloads/TestDataConnect...
Url: http://msdn.microsoft.com/library/default.asp?u...
Url: http://blogs.msdn.com/adonet/archive/2006/10/30...
Url: http://wilderminds.blob.core.windows.net/downloads/datasourcesgone...
Url: http://www.dunntraining.com/EnterpriseDataArchi...
Url: http://www.amazon.com/gp/product/0735621411
Url: http://wildermuth.com/viewrant.aspx?id=2053
I have been a fan of Typed DataSets since the PDC Beta of .NET. I’ve been asked to detail my recent criticism of Table Adapters in the .NET 2.0 Typed DataSets. Here are the points that I am most concerned with:
I was having a chat with David Sceppa about TableAdapters recently when he mentioned that in the final VS 2005 bits, the TableAdapters will use timestamp fields for concurrency. I told him flatly I didn't think it worked, but I was wrong. If you create a Table in a Typed DataSet in VS 2005 and include the timestamp field in the select statement, it will use the timestamp field for concurrency. Awesome!
Url: http://www.amazon.com/exec/obidos/ASIN/15905951...
Url: http://www.devsource.com/article2/0,1895,192569...
Url: http://blogs.msdn.com/florinlazar/archive/2005/...
I am currently doing a bunch of evaluations on OR Mappers, Code Gen and Business Object Frameworks for my new book. If anyone knows about anything great that might go unnoticed, please drop a comment or send me an email!
Url: http://dotnet.sys-con.com/read/105634.htm
Url: http://www.devsource.com/article2/0,1895,183430...
In Visual Studio 2005, when you create a Typed DataSet, it automatically creates TableAdapters for you. These are interesting objects that use a DataAdapter internally to make a more cohesive data access layer. It will certainly help the RAD developers get started. I am not so sure about how they will work long-term though.
Url: http://jelle.druyts.net/PermaLink.aspx?guid=616...
Url: http://news.com.com/Oracle+readies+second+grid+...
In previous builds, the DataSet had a property on them that said whether they should clear the DataSet whenever it is Filled by a DataAdapter. It seems to be missing in the latest builds. I actually prefer this because the nature of DataSets (and often overlooked) is that successive DataAdapter.Fill's will allow a DataSet to grow incrementally. New rows will be added, and existing rows will be updated (unless it is dirty, then you would get an exception).
Url: http://wildermuth.com/content.aspx?id=rantview&...
Url: http://www.microsoft.com/downloads/details.aspx...
Url: http://msdn.microsoft.com/library/default.asp?u...
Url: http://www.oracle.com/technology/tech/dotnet/in...
Url: http://www.lhotka.net/WeBlog/PermaLink.aspx?gui...
I've been spending some time lately reviewing how companies are doing data access in .NET. When I look at how most of them have crufted up solutions, I am amazed. The model that Microsoft supports seems so obvious to me, but I am neck deep in it. I'd like to hear from my readers their specific experience with creating data access in .NET; with an eye to why or why not use COM+ for transactions; Typed DataSet or DataReaders; Business Objects or Messages. I am trying to understand where the community is.
I always forget this blog this, but when I am doing a database project using Typed DataSets, I almost always use a Component Surface to build my DataAdapters interactively. For example:
Url: http://dotnetjunkies.com/WebLog/sahilmalik/arch...
Url: http://www.lhotka.net/WeBlog/CommentView.aspx?g...
For some time now I've been pushing the idea of doing DataSet updates using DataAdapters that use a 1-to-1 relationship between DataAdapter and logical data elements (e.g. Tables or Stored Procedures usually). This is especially true when you are dealing with related tables in DataSets (the sweet spot for DataSets IMHO). I've continually forgotten to post this code that I use to do these updates. The idea of this code is for the user to provide arrays of Tables and DataAdapters that imply the order of the updates. For example
Url: http://wildermuth.com/powertoys
Recently I was talking with Rocky Lhotka and he said something interesting:
I've had time lately to think about the nature of data in development lately. I've been talking with Rocky Lhotka and Michael Earls about it (as well as number of others) about the issues with dealing with data in applications.
I was taking a refresher MCSD test today to get ready to take one of the tests and came upon a question that is wrong. But it does infer that there is some confusion about how transactions are propogated to commands...or may be evidence that it is a bug. For example:
I have been thinking a lot about how Typed DataSets are generated and was spelunking through the code again when it got me thinking. The Typed DataSet generator doesn't really generate the code based on the .xsd, but on the DataSet. It simply loads the .xsd into a DataSet then interrogates the DataSet directly for everything (tables, columns, relationships, constraints). So if the Typed DataSet Designer cannot handle something (like relationships *without* constraints, see below), but the DataSet schema allows it...simply create the DataSet and save the .xsd file to see what it produces! This gets around some fundamental problems with the designer. It does require you start looking and understanding .xsd, but it is a useful skill to have anyway...right?
I have been reviewing a bunch of code that utilizes ADO.NET's DataAdapters. This code has been some samples that are on the Internet, some questions directly to http://wildermuth.com and others from DevelopMentor's .NET Mailing Lists. One thing I have noticed is that much of that code is opening the database connection before using the DataAdapter to fill a DataSet.
Why is everyone so down on using DataSets in .NET Web Services? Sure, I’ll admit that using DataSets directly as Web Service parameters are indeed a problem. But why throw the baby out with the bath water?