1
Vote

Fetch without returning IEnumerable<T>

description

I would like an non-generic Fetch so I wouldn't have to return something if I don't need to. Right now I have to return something to make the compiler happy:
 
        DataSession.Current.Fetch<object>("ForenAktivitet_SelectAll_ForenAktivitet /* @sessionId */", 
                    rd =>
                    {
                        string nummer = rd["udvalg"].ToString().Trim();
                        if (!_udvalgAktiviteterCache.ContainsKey(nummer))
                            _udvalgAktiviteterCache[nummer] = new List<string>();
 
                        //Hent listen over aktiviteter på udvalget og tilføj aktiviteten
                        var aktiviteter = _udvalgAktiviteterCache[nummer];
                        aktiviteter.Add(rd["aktivitet"].ToString());
 
                        return "";

                    }, SessionId);  
 
I would like to be able to do this:
 
        DataSession.Current.Fetch("ForenAktivitet_SelectAll_ForenAktivitet /* @sessionId */", 
                    rd =>
                    {
                        string nummer = rd["udvalg"].ToString().Trim();
                        if (!_udvalgAktiviteterCache.ContainsKey(nummer))
                            _udvalgAktiviteterCache[nummer] = new List<string>();
 
                        //Hent listen over aktiviteter på udvalget og tilføj aktiviteten
                        var aktiviteter = _udvalgAktiviteterCache[nummer];
                        aktiviteter.Add(rd["aktivitet"].ToString());                                                      
                    }, SessionId);

comments

TheIMan wrote Jan 21, 2011 at 6:41 AM

You could add some kind of overload to Fetch, but that would make the methodname misleading, and adding some kind of iterator function, would clutter the simple design of MD. Why don't you use a standard iterator, like this:

foreach (var itm in DataSession.Current.Fetch<Tuple<string, string>>("ForenAktivitet_SelectAll_ForenAktivitet / @sessionId /",
        rd => Tuple.Create(rd["udvalg"].ToString().Trim(), rd["aktivitet"].ToString()),
        SessionId))            
{
       if (!_udvalgAktiviteterCache.ContainsKey(itm.Item1))
                _udvalgAktiviteterCache[itm.Item1] = new List<string>();

         //Hent listen over aktiviteter på udvalget og tilføj aktiviteten
         var aktiviteter = _udvalgAktiviteterCache[itm.Item1];
         aktiviteter.Add(itm.Item2);
}

That's the way that MD was inntended to be used.

wrote Feb 13, 2013 at 6:38 PM