All posts by Julie

Stored Procs in LINQ to SQL in March CTP (The VB Version)

In a previous interation, I managed to track down some sample code that built a LINQ call to a stored procedure, the class which it returns and executed it in LINQ to SQL.

The code has changed dramatically in the March CTP. Luckily, Mike Taulty beat me to it and I leveraged the C# code in his post to revise mine.

One of the things I was so silly to do in my previous test was to hand code the return class rather than just create it in the designer and return that.

But all of this is not totally necessary since you can now drag and drop stored procs onto the LINQ to SQL Visual Modeler and make calls to it. Interestingly the return type is just created on the fly at run time so it’s not even an issue – yay to anonymous types.

However, it’s still nice to know how to build this stuff becasue drag n drop doesn’t solve every coding problem. So check Mike’s post for the C# version.

Here is a working version in VB.

“CustOrderHist” is the name of the stored procedure in my database. 

What this is doing is

1) using the attribute to hook it up to the sproc
2) taking in a parameter of customerID and associating it with the parameter @CustomerID in the stored proceudre
3) Returning and IEnumerable of type CustOrderHistoryResult (the class I created in the designer that matches the structure of what the sproc returns).

On the client side, I can now take the result and do whatever I want with it, such as bind it to a gridview on a web page.

<StoredProcedure(Name:=”CustOrderHist”)> _
Public Function GetCustOrderHist(<Parameter(Name:=”CustomerID”)> ByVal customerID As String) As IEnumerable(Of CustOrderHistoryResult)

  Dim result As IQueryResults(Of CustOrderHistoryResult) = _
 
ExecuteMethodCall(Of CustOrderHistoryResult)(Me,
  MethodInfo.GetCurrentMethod, customerID)
    
  Return result

  End Function

My dogs are too cute

Oh, and the cat, too.

I’ve been working from th ekitchen for about a week so I can hang out with the dogs. They don’t do stairs anymore and we haven’t cleared the path through the snow for them to get to my office from the outside.

So here they are hanging out withme. G.B. the cat has found his favorite warm spot in the house (with Tasha) and Daisy is on her cushy bed. What a mush.

Win a trip to the Global Summit of Women (Software Developers)

Thanks again to Kate (she sure helps funnel good info for me), I see that Microsoft is sponsoring a contest to win a full paid trip to this [Microsoft sponsored?] summit.

You need to be a software developer chick (sorry guys), live in one of these 5 countries: Austria, Denmark, France, Germany or the UK, and not work for Microsoft.

The submission is an essay and due by April 2.

Check it out here.

MIX07!

The stars have aligned and I’m going to MIX07.

I am ignoring the fact that this is going to mean a whole lot of flying . In a 5 week period I will fly to Orlando and back (from Vermont), then to Seattle and back and then to Las Vegas and back. Oy, silly me.

 

A few of the many syntax changes in VB (and Linq for SQL queries)

VB9 has come a long way in the new March CTP of Orcas! Paul Vick has a quick list of what is now in there. And there are a lot of good details in the msdn documentaiton that comes along with the CTP.

A few things I noticed quickly when bringing my LINQ for SQL demos over to the new bits.

  • First, and happily, the named parameter syntax of := is no longer necessary. You can just type =, like a normal person.
  • You need to be explicit about using the reference to the entity when refering to properties. In other words where I could say
     From s In db.Suppliers_
                Where CompanyName = “Exotic Liquids” …
    I now need to put  “s.” in front of the CompanyName property
  • The anonymous types have been fleshed out more and you need to use the With keyword when creating one.
  • Also in the anonymous types, when you are definining a new named parameter, you need the “.” in front of that parameter, so it is obviously a property of the anonymous type.
  • Maybe this isn’t the ultimate way to do it, but it seems that if you want to further leverage one of the properties of that anonymous type, eg to order on, then you need to name the anonymous type and reference it in the order by clause. Again, maybe this isn’t THE way, but it’s the way I got my code working again.

Here’s a before (as in earlier CTP) and an after (March CTP) example of a simple query that does all of these things.

OLD
From s In db.Suppliers _
            Select New {Company := CompanyName, Country, Products}

NEW
From s In db.Suppliers _
            Select New With {.Company = s.CompanyName, s.Country, s.Products}

Here’s what it looks like with a nested query
  From s In db.Suppliers _
            Select New With {.Company = s.CompanyName, s.Country, _
            .Products = (From p In s.Products _
                Select New With {p.ProductName})}

OLD with Order By
From s In db.Suppliers _
            Select New {s.CompanyName, s.Country, s.Products} _
            Order By CompanyName

NEW with Order By
  Dim mylist = From s In db.Suppliers _
            Select s2 = New With {s.CompanyName, s.Country, s.Products} _
            Order By s2.CompanyName

I’ve seen samples where “s” has been used for both the reference to the items in the db.suppliers collection AND to the name of the new anonymous type. That scares me, so I used a new variable (s2).

There is also a whole new set of query samples in the MSDN documentation.

Powder day schmowder day

Yesterday I proclaimed that today would be a powder day – regardless of how much work I have to do. We had a forecast of 7-12 inches of new snow.

The promised snow started before we went to bed last night.

But when I woke up in the middle of the night to a howling wind and then again this morning to the same, I knew it would be another productive day in front of the computer. It’s wild out there. Rich is still heading out to the ski hill. He’s insane. I certainly wouldn’t want to be sitting in the chair lift in this weather.

It’s what he refers to as a “character building day.” That’s an old joke from when he worked for a builder that, even in the winter, had his crew arrive at 6am and work until 4pm. Even when it was 5 degrees out and all then ended up doing was shoveling snow out of the foundation. I’d last about five minutes in a job like that. Give me my cozy office chair any day! 🙂

Ooh goody another post on the adonet team blog

The ADO NET Team has been cranking out fab content on their blog. Brian Dawson just wrote a post all about Object Services.

In trying to sort out all of the options that we now have with Entity Framework and LINQ, I’m always happy to see a list like this. But go read the whole post so nothing is out of context

What can you do with Object Services?

Here’s a bullet list of some of the normal operations which object services can provide:

·         Query using LINQ or Entity SQL

·         CRUD

·         State Management – change tracking with events

·         Lazy loading

·         Inheritance

·         Navigating relationships

More features of Object Services allow for data conflicts resolution. For example, Object Services supports:

·         Optimistic concurrency

·         Identity resolution –  keeping on copy of the object even from several different queries

·         Merging

·         Refreshing data with overwrite options (ie: server wins or client wins)

Upcoming Spring INETA User Group Presentations

I will be speaking in Albany NY at TechValley.NET on March 12th about ADO.NET Orcas.

In April I will be doing a two city tour speaking at Bellingham.NET (a group led by Andrew Robinson, that is a brand new member of INETA) and then at South Sound .NET in Olympia, Washington run by my old INETA pal, Paul Mehner (with help from another pal, Camey Combs.)

In between these two trips, I’ll be at DevConnections in Orlando and Code Camp 7 in Waltham, Mass. I guess “travel season” is starting!

I’m looking forward to all of these trips! Now back to that new CTP release.

Samsung antitrust settlement

After reading this in the Free Press, I had a great idea what we can do with any funds coming to Vermont – support the high tech industry here! How fitting.

Vermont shares in $90 million settlement with Samsung

Published: Wednesday, February 7, 2007
MONTPELIER – Vermont is one of 40 states to settle with electronics manufacturer Samsung in an antitrust lawsuit, Vermont Attorney General William Sorrell announced this week.

The $90 million nationwide settlement with Samsung Semiconductor, Inc. and Samsung Electronics Co., Ltd. arose from a claim of a price-fixing scheme among Samsung and several other of the world’s largest computer memory chip manufacturers that began in the 1990s.

The settlement, which is still subject to a court review, does not yet detail how the money will be meted out among the suit’s participating states and consumers.