I'm having problems replying to the forum - so I'm replying to you.
I hope you will reply to the forum on my behalf. 
 
FROM Alon Hirsch:

Hi,
 
>From the documentation (PDF format) on physical page21 (of 107) (in the PDF it 
>is page 18:

In addition to providing the ability to return an IList of objects, the 
DataMapper supports the use of a
strongly-typed custom collection: a class that implements the 
System.Collections.CollectionBase abstract class.
The following is an example of a CollectionBase class that can be used with the 
DataMapper
 
A CollectionBase class can be specified for a select statement through the 
listClass attribute. The value of the
listClass attribute can be a Type Alias or the fully qualified name of a class. 
The statement should also indicate
the resultClass so that the DataMapper knows how to handle the type of objects 
in the collection. The
resultClass specified will be automatically mapped to the columns in the 
result, based on the result metadata.
The following example shows a <statement> element with a listClass attribute
 
Example 3.16. A <statement >element with listClass attribute
<statement id="GetAllAccounts"
listClass="AccountCollection"
resultClass="Account">
select
Account_ID as Id,
Account_FirstName as FirstName,
Account_LastName as LastName,
Account_Email as EmailAddress
from Accounts
order by Account_LastName, Account_FirstName
</statement>
 
I believe that IF you can return the existing System.MembershipUserCollection - 
this is how you will have to do it . 
 
I'm not sure if it will work as the document states that the collection must 
implement the CollectionBase interface - I haven't had a look at what it 
implements or inherits(but it might):
Example 3.15. A System.Collections.CollectionBase implementationusing 
System;using System.Collections;namespace WebShop.Domain{public class 
AccountCollection : CollectionBase{public AccountCollection() {}public Account 
this[int index]{get { return (Account)List[index]; }set { List[index] = value; 
}}


From: [EMAIL PROTECTED]: [EMAIL PROTECTED]: RE: How can I populate 
MembershipUserCollection instead of IList?Date: Tue, 25 Mar 2008 11:13:20 -0400


Thanks but I still can't the syntax right. Initially I used QueryForObject 
because I thought I was returning a single MembershipUserCollection object with 
MembershipUsers within it. But now I'm trying to use QueryForList and it won't 
work because it is returning an IList type instead of MembershipUserCollection. 
I tried casting it to MembershipUserCollection and even tried getting just the 
first IList element, but nothing works. Are you sure I should use QueryForList 
because it's using IList instead of the collection class? This is what I tried: 
// Compile error: Cannot convert type // 
'System.Collections.Generic.IList<System.Web.Security.MembershipUserCollection>'
 to // 'System.Web.Security.MembershipUserCollection' via a reference 
conversion, boxing conversion, unboxing conversion, wrapping conversion, or 
null type conversionpublic static MembershipUserCollection GetAllUsers(){return 
DataPortal.Users.QueryForList("select-all-users", null)as 
MembershipUserCollection;} // Compile error: Cannot convert type 
'System.Collections.IList' to // 'System.Web.Security.MembershipUserCollection' 
via a reference conversion, boxing conversion, // unboxing conversion, wrapping 
conversion, or null type conversionpublic static MembershipUserCollection 
GetAllUsers(){return 
DataPortal.Users.QueryForList<MembershipUserCollection>("select-all-users", 
null)as MembershipUserCollection;} // Compiler error: Unable to cast object of 
type 'System.Web.Security.MembershipUserCollection' // to type 
'System.Collections.Generic.IList`1[System.Web.Security.MembershipUserCollection]'.public
 static MembershipUserCollection GetAllUsers(){return 
DataPortal.Users.QueryForList<MembershipUserCollection>("select-all-users", 
null)[0]as MembershipUserCollection;}  
 > Subject: RE: How can I populate MembershipUserCollection instead of IList?> 
 > Date: Tue, 25 Mar 2008 16:40:50 +0200> From: [EMAIL PROTECTED]> To: 
 > [email protected]> > Hi,> > You should be using QueryForList - 
 > QueryForObject will return a SINGLE> object where your query (and what you 
 > want) returns a collection of> objects (multiple rows)> > HTH,> > Alon> > 
 > Alon Hirsch| eBAM Systems| Systems Developer> *: [+ 27] (0)11 719-2222|*: 
 > [+27] (0)83 500-0066 |*: [+27] (0)11> 719-2051> *: [EMAIL PROTECTED]|*: 
 > http://www.ebam.co.za > > > > > -----Original Message-----> From: dCyphr 
 > [mailto:[EMAIL PROTECTED] > Sent: 25 March 2008 04:37 PM> To: 
 > [email protected]> Subject: Re: How can I populate 
 > MembershipUserCollection instead of> IList?> > > Thanks, I don't know how I 
 > missed that. But I've been toying with it and> I can't get it quite right. 
 > It keeps returning null. Am I right to use> QueryForObject? This is what I 
 > have but I don't know what I'm doing> wrong:> > SqlMap.config:> <alias>> 
 > <typeAlias alias="MembershipUser"> type="System.Web.Security.MembershipUser, 
 > System.Web, Version=2.0.0.0,> Culture=neutral, 
 > PublicKeyToken=b03f5f7f11d50a3a" />> <typeAlias 
 > alias="MembershipUserCollection"> 
 > type="System.Web.Security.MembershipUserCollection, System.Web,> 
 > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />> 
 > </alias>> > <resultMaps>> <resultMap id="MembershipUserResult" 
 > class="MembershipUser">> <constructor>> <argument 
 > argumentName="providerName" column="ProviderName"> type="string" 
 > dbType="VarChar" />> <argument argumentName="name" column="UserName" 
 > type="string"> dbType="VarChar" />> <argument argumentName="providerUserKey" 
 > column="UserID"> type="object" dbType="VarChar" />> <argument 
 > argumentName="email" column="Email" type="string"> dbType="VarChar" />> 
 > <argument argumentName="passwordQuestion"> column="PasswordQuestion" 
 > type="string" dbType="VarChar" />> <argument argumentName="comment" 
 > column="Comment"> type="string"> dbType="VarChar" />> <argument 
 > argumentName="isApproved" column="IsApproved"> type="bool" dbType="Boolean" 
 > />> <argument argumentName="isLockedOut" column="IsLockedOut"> type="bool" 
 > dbType="Boolean" />> <argument argumentName="creationDate" 
 > column="DateCreated"> type="dateTime" dbType="Date" />> <argument 
 > argumentName="lastLoginDate" column="LastLoginDate"> type="dateTime" 
 > dbType="Date" />> <argument argumentName="lastActivityDate"> 
 > column="DateModified"> type="dateTime" dbType="Date" />> <argument 
 > argumentName="lastPasswordChangedDate"> column="LastPasswordChangedDate" 
 > type="dateTime" dbType="Date" />> <argument argumentName="lastLockoutDate"> 
 > column="LastLockoutDate"> type="dateTime" dbType="Date" />> </constructor>> 
 > </resultMap>> </resultMaps>> > <select id="select-all-users" 
 > listClass="MembershipUserCollection"> resultMap="MembershipUserResult">> 
 > SELECT *> FROM Memberships> </select>> > .NET implementation:> public 
 > MembershipUserCollection GetAllUsers()> {> try> {> return> 
 > DataPortal.Users.QueryForObject("select-all-users",> null) > as 
 > MembershipUserCollection;> }> catch> {> throw;> }> }> > All my other sql 
 > methods work and am able to get a single MembershipUser> (I have to use the 
 > resultsMap to feed the constructor because Microsoft> doesn't allow any 
 > other way to populate an existing MembershipUser, many> read-only 
 > properties). But when I use the listClass above, it compiles> fine but it 
 > returns null. I've also tried <statement> instead of> <select> and the same 
 > problem happens. What am I missing??> > > dCyphr wrote:> > > > I'm trying to 
 > implement the GetAllUser method in the Membership > > Provider and I have to 
 > return a MembershipUserCollection populated > > with MembershipUser objects. 
 > Is this possible? I'm pretty much looking> > > for (which doesn't exist of 
 > course):> > > > public T QueryForCollection<T, U>> > > > where T would be 
 > MembershipUserCollection and U would be> MembershipUser.> > Is there any way 
 > to achieve something like this? My only option I can > > think of is loading 
 > the IList with MembershipUsers, then loop thru the> > > IList and populate a 
 > MembershipUserCollection one by one in my code, > > but that's really 
 > redundant. Any ideas?> > > > --> View this message in context:> 
 > http://www.nabble.com/How-can-I-populate-MembershipUserCollection-instea> 
 > d-of-IList--tp16184430p16275132.html> Sent from the iBATIS - User - Cs 
 > mailing list archive at Nabble.com.> 

How well do you know your celebrity gossip? Talk celebrity smackdowns here. 
_________________________________________________________________
Watch “Cause Effect,” a show about real people making a real difference.  Learn 
more.
http://im.live.com/Messenger/IM/MTV/?source=text_watchcause

Reply via email to