November 2006 Blog Posts

DataSets Suck

First off, a correction. In my recent post on OLTP using DataSets, I gave four methods that would allow you to handle non-conflicting updates of a row using the same initial data state. In reviewing a tangent later I realized that method 2 wouldn't work. Here's why: The auto-generated Update for a datatable does a "SET" operation on all the fields of the row and depends on the WHERE clause to make sure that it isn't going to change something that wasn't meant to be changed. Which means that option 2 would not only not be a good OLTP solution, it'd overwrite prior updates...

posted @ Thursday, November 23, 2006 11:47 PM | Feedback (0)

DataSets and Business Logic

Whoa, that was fast. Udi Dahan responded to my post on DataSets and DbConcurrencyException. Cool. Also cool: he has a good point. Two good points, really. Doing OLTP Better Out of the Box I'll take his last point first because it's pure conjecture. Why don't DataSets handle OLTP-type functions better? My first two suggestions would, indeed, be better if they were included in the original code generated by the ADO.NET dataset designer. I wish that they were. Frankly, the statements already generated by the "optimistic" updates option are quite complex as-is and adding an additional "OR" condition per field wouldn't really be adding that much...

posted @ Wednesday, November 22, 2006 2:23 AM | Feedback (0)

4 Solutions to DbConcurrencyException in DataSets

  Following links the other day, I ran across this analysis of DataSets vs. OLTP from Udi Dahan. His clincher in favor of coding OLTP over using datasets is this: The example that clinched OLTP was this. Two users perform a change to the same entity at the same time – one updates the customer’s marital status, the other changes their address. At the business level, there is no concurrency problem here. Both changes should go through.When using datasets, and those changes are bundled up with a bunch of other changes, and the whole snapshot is sent together from each user,...

posted @ Tuesday, November 21, 2006 7:35 AM | Feedback (0)

Two Things I Regret

Have you ever been in an interview and gotten some variation on the question "What do you regret most about your last position?" Everyone hates questions like that. They're a huge risk with little upside for you. You're caught between the Scylla of honesty and the Charybdis of revealing unflattering things about yourself. Still, such questions can be very valuable if used personally for analysis and improvement. In that light, I'll share with you two things I regret about my stay at XanGo. Since I've ripped on the environment there in the past, it's only fair if I elaborate on things that...

posted @ Saturday, November 18, 2006 3:10 AM | Feedback (0)

(Lack of) Progress Bars

More griping. I know! You'd think I were a negative person. I'm not really. I don't think. Anyway, this one is short. I've noticed a trend lately (okay, in two products that I sort of like) where developers are using a progress bar to indicate that the program is busy and will get back to you shortly. Now, to me, there's a reason that ye ole progress bar has a Minimum, a Maximum and a Value. You know, it has a task that starts at some value, that value "progresses" until it hits some ending where it can then stop. No doubt I'm being...

posted @ Wednesday, November 15, 2006 3:44 AM | Feedback (0)

More Arrogant Software

I don't mean for this to be a "gripe" blog. Not that gripe blogs aren't entertaining--I mean, I kind of like Mr. Angry, the Daily WTF, and others. That said, sometimes you just have to share in the hopes that you aren't alone in this whole frustration thing. I named names in a previous post about Arrogant Software, so I guess this is mostly adding to the list. Today's highlight is SpySweeper from WebRoot. Now, like all the software on my Arrogant list, I found SpySweeper useful. I even bought two subscriptions so that both our computers would be covered. Unfortunately, the...

posted @ Tuesday, November 14, 2006 3:57 AM | Feedback (0)