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.