Monday, September 28, 2009

PLINQO and LINQ to SQL

I've been using LINQ to SQL for a while now (even with the lack of support for some SQL Server advanced data types) but I was always wanting for something more. There is great query support with LINQ, but how do I have it do things like automatic rule checking? What happens if I re-vamp some of the fields in a table and want that reflected back in my DBML and entities? How do I make data annotations so that I can apply validation support in the next version of MVC?

Enter PLINQO, a free add-on to LINQ to SQL that adds these things and a lot more. I won't get into all the details of PLINQO as their site explains a lot of it. I want to share my review of it and how it's worked for me so far.

To get PLINQO working, you have to either purchase CodeSmith or download their free trial. The code generation templates for PLINQO come wrapped up in there. Once installed, it's pretty easy to generate a new data project and Dynamic Data project in either C# or VB.NET. From my experience with the product, it seems like the better option for now is to use the C# version. I was getting C# overlap in the VB version (like the static keyword in methods) and there isn't code-behind files to figure out in the C# version.

You really have two choices for code generation here - either let PLINQO build you the projects from scratch or add a CodeSmith project into an existing project. I didn't immediately understand how to do the latter of the two, but it's as easy as adding a new item to a project. Once that's done, right click on the .cst file, manage outputs and add the PLINQO templates to your project.

PLINQO seems to do a pretty good job of making dynamic changes to your DBML file. I did notice that when it generates the entity files, you may have to go back and do some preening. PLINQO extracts out all of the entities in your DBML as separate entity classes in their own files. When I took a couple of entites in the DBML and made their names singular instead of plural, I ended up having two C# entity files, plural and singular. Make sure you delete the entities you're not using anymore (after you copy over your hand generated code, of course).

Another thing I like is the automatic checking of data on submission using data annotations and custom rules. It's nice to be able to put all of this goodness in a data project, surround your CrUD operations with a Try..Catch block and check to see if you have an error. Takes a lot of the validation code out of the presentation layer, which is a good thing.

Overall I'm pretty impressed! The documentation is a little sketchy so far, but hopefully it'll get better in time. The best thing to do if you have questions is to head over to the CodeSmith Community and ask. The folks over there seem more than willing to lend a helping hand.

I would strongly suggest giving PLINQO a try, especially if you're hooked on LINQ to SQL.

Monday, March 30, 2009

MIX09 - a great conference for Web Dev, Graphic Design and User Experience(UX)

Just recently got back from MIX09 conference at The Venetian in Las Vegas. This is a great conference for web developers, graphic designers and user experience engineers and those who aspire to be one. Although it's Microsoft-centric for the most part, there are sessions for everyone and they have posted all of the sessions online so that everyone can see them!

My favorite sessions:

There was also a nice workshop about design for web developers. Unfortunately, it's not on the web for viewing.

Failed to map the path '/' when running page

I tried to run a specific admin web page on a project and immediately got back this error, apparently while the app was looking for a Configuration Setting or something. Poked around for a while trying to fix the problem and ran across another blog post about running Visual Studio as Administrator. Tried doing that and everything worked as expected afterwards.

Was running Vista not joined to a domain.

Monday, March 23, 2009

ASP.NET ListView Cancelling Problem

I recently changed some GridViews over to ListViews in order to better handle the UI elements when inserting and editing items. On hitting the Cancel button, I received the following error:

Cancel can only be called from the currently-edited record or an insert item.

I finally found out that the problem was running the following code in the ItemCommand:

lvScopeNote.InsertItemPosition = InsertItemPosition.None
lvScopeNote.EditIndex = -1

Moving those commands to the ItemCanceling event caused the operation to work correctly.

Monday, February 23, 2009

Looking at WebOrb

We are starting to look at a product that looks very compelling in the .NET/Flex interaction arena. The product is called WebOrb and it looks like it takes .NET POCO objects and transports them to Flex in AMF3 or RMTP format. I downloaded the .NET client and started installing away using their own post about how to install the product in Vista and IIS7.

Once completed, I tried to start up the site but all of the non .aspx pages wouldn't load. This confounded me for most of the weekend and today as I'd just get back an empty page with nothing in it. I tried to post a question to the WebOrb forum about this and they were helpful in trying to troubleshoot the problem.

Finally in desperation, I started Googling about problems delivering HTML pages in IIS7 and came upon this helpful post. I went in and made the changes indicated and problem solved. I posted my own version of the fix here (you may need a Yahoo Groups account to view). Now on to the testing! Will post my impressions here.

Tuesday, February 17, 2009

RIAsults may vary

Well here goes yet another foray by a wayward web developer. Another RIA blog, you ask? There's already so many! I figured I could add my two cents worth and maybe from another perspective.

I've always been a Microsoft weenie. Like I always tell people, "Bill Gates has earned me a paycheck for many years now." I cut my teeth a LONG time ago on dBase and other micro applications but quickly went over to the now defunct FoxPro. Since then I've never looked back, reading the tea leaves and converting to Visual Basic 5/6, then on to .NET as soon as it was available. Somehow I gravitated towards ASP.NET instead of fat client and have been working in the web world for years.

Silverlight really got me thinking about the next stage of RIA development and how we could implement better applications inside and outside of my organization. The whole place seems to want web apps to do everything - no deployment headaches and fat client acceptance testing. But the bubble was about to burst on my Silverlight adventure.

Being in a large organization (almost 6,000 people) we have almost every type of machine and OS conceivable (kudos to our IT staff for trying to handle all of this!). My team has been tasked to create an application to let photographers handle photos and their requisite metadata better. Silverlight's up to the task and is probably the best option, I thought.

So I called one of the photographers and walked him through the Silverlight goodness. "Go to Hard Rock and look at their memorabilia collection," I asked him. "It won't install," he said. Come to find out, he's got a PowerPC Mac powerhouse and won't be switching anytime soon. Knocks Silverlight right out of contention. So now what?

When I started looking at Adobe products, Flex looked nice. Runs on everything pretty much, Actionscript looks sort of like C#, markup resembles XAML. What's not to like?

So ride along with me as my team and I figure this all out and make the switch. We'll be working with WCF, maybe some WF, SQL - the whole nine yards. I want to post information and goodness to share with all the rest of my dev colleagues and maybe pick up some good tips from others along the way!